Entwickler, die sich mit Reflection befassen, stoßen häufig auf Szenarien, in denen der Zugriff auf private Methoden erforderlich ist. Während Java den direkten Zugriff auf diese Methoden durch herkömmliche Reflexionsmechanismen einschränkt, bietet es eine Problemumgehung durch reflexionsbasierte Methoden.
Lösung:
So rufen Sie eine private Methode mithilfe von Reflexion auf , ändern Sie das bereitgestellte Code-Snippet wie folgt:
Element node = outerNode.item(0); String methodName = node.getAttribute("method"); String objectName = node.getAttribute("object"); if ("SomeObject".equals(objectName)) object = someObject; else object = this; // Use getDeclaredMethod to include both private and inherited methods Method method = object.getClass().getDeclaredMethod(methodName); // Enable access to the private method using setAccessible method.setAccessible(true); // Invoke the method and store the result Object r = method.invoke(object);
Vorbehalte:
Alternative Ansätze:
Wenn Sie die Zugänglichkeit der Methode ändern oder eine PrivilegedAction implementieren (wie in vorgeschlagen). die bereitgestellte Antwort) nicht durchführbar ist, ziehen Sie die folgenden Alternativen in Betracht:
Das obige ist der detaillierte Inhalt vonWie kann ich private Methoden mithilfe von Java Reflection aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!