Heim > Java > javaLernprogramm > Wie kann ich private Methoden mithilfe von Java Reflection aufrufen?

Wie kann ich private Methoden mithilfe von Java Reflection aufrufen?

Barbara Streisand
Freigeben: 2024-11-08 03:57:02
Original
835 Leute haben es durchsucht

How Can I Invoke Private Methods Using Java Reflection?

Aufrufen privater Methoden über Reflection

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);
Nach dem Login kopieren

Vorbehalte:

  • getDeclaredMethod ruft nur deklarierte Methoden innerhalb der aktuellen Klasse ab, keine geerbten Methoden.
  • SecurityManager kann die Verwendung von setAccessible einschränken.

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:

  • Verwenden Sie eine Getter-Methode, die die Funktionalität der privaten Methode indirekt offenlegt.
  • Erstellen Sie eine öffentliche Schnittstelle oder abstrakte Klasse, die die deklariert private Methode und lassen Sie sie von der implementierenden Klasse überschreiben.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage