Trotz Javas Einschränkung beim Zugriff auf private Methoden durch Reflection gibt es eine Lösung, um diese Einschränkung zu überwinden. Um eine private Methode über Reflektion aufzurufen, kann man den folgenden Ansatz nutzen:
Erstens erhalten Sie die private Methode mit getDeclaredMethod(String methodName) anstelle von getMethod(String methodName). Diese Methode ermöglicht den Zugriff auf öffentliche und private Methoden, die innerhalb der aktuellen Klasse deklariert sind.
Um dann die Standardzugriffsbeschränkung für private Methoden zu umgehen, verwenden Sie die Methode setAccessible(boolean accessable), um den Zugriff zu gewähren. Indem Sie „accessible“ auf „true“ setzen, überschreiben Sie die Schutzeinstellungen und erlauben den Aufruf der privaten Methode.
Rufen Sie abschließend die private Methode mit invoke(Object object, Object... args) mit dem gewünschten Objekt und allen erforderlichen auf Argumente.
Hier ist eine aktualisierte Version des in der ursprünglichen Frage bereitgestellten Codes:
Method method = object.getClass().getDeclaredMethod(methodName); method.setAccessible(true); Object r = method.invoke(object);
Vorbehalte:
Das obige ist der detaillierte Inhalt vonWie kann ich trotz Zugriffsbeschränkungen private Methoden mithilfe von Reflection in Java aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!