Java, der über Reflection auf private Eigenschaften zugreift

8

Ich habe folgende Paketstruktur und Klassen.

%Vor%

Ich habe das ClassC-Objekt und versuche, fieldX über Reflektion zu erhalten.

%Vor%

Aber ich bekomme NoSuchMethod Ausnahme.

Ich habe auch versucht, das fieldX direkt zu erreichen. Aber diesmal bekomme ich NoSuchField Exception.

%Vor%

Was mache ich falsch? Gibt es eine Möglichkeit, dieses Feld vom ClassC-Objekt zu erhalten?

Lösung: (Vielen Dank vz0 für die Lösung);

Direkter Zugriff auf privates Feld:

%Vor%

Methodenaufruf;

%Vor%     
huseyinarslan 08.02.2011, 15:46
quelle

1 Antwort

12

Der Class.getMethod -Aufruf gilt nur für öffentliche Methoden. Sie müssen den Aufruf Class.getDeclaredMethod verwenden und dann die Eigenschaft Method.setAccessible auf true setzen:

%Vor%

BEARBEITEN: Da die Methode getFieldX für ClassA deklariert ist, müssen Sie die Methode von ClassA und nicht von ClassC abrufen. Im Gegensatz zu getMethod call rufen Sie% code_de% auf ignoriert Superklassen .

    
vz0 08.02.2011, 15:52
quelle

Tags und Links