Unzulässige Zugriffsausnahme, wenn versucht wird, durch Introspektion auf attibute von der Elternklasse zuzugreifen

8

Ich spiele gerade mit Introspektion und Anmerkungen in Java 1.5. Sie haben eine übergeordnete abstrakte Klasse AbstractClass . Die geerbten Klassen können Attribute (vom Typ ChildClass ) haben, die mit einer benutzerdefinierten @ChildAttribute -Anmerkung versehen sind.

Ich wollte eine generische Methode schreiben, die alle @ChildAttribute Attribute einer Instanz auflistet.

Hier ist mein Code soweit.

Die Elternklasse:

%Vor%

Eine Testimplementierung mit einigen untergeordneten Attributen

%Vor%

Der Test selbst:

%Vor%

Ich erhalte den folgenden Fehler:

%Vor%

Ich habe mir gedacht, dass der Introspektionszugriff sich nicht um Modifikatoren kümmerte und sogar private Mitglieder lesen / schreiben konnte. Es scheint, dass dies nicht der Fall ist.

Wie kann ich auf die Werte dieser Attribute zugreifen?

Vielen Dank im Voraus für Ihre Hilfe,

Raphael

    
Raphael Jolivet 13.08.2010, 13:00
quelle

2 Antworten

19

Fügen Sie field.setAccessible (true) hinzu, bevor Sie den Wert erhalten:

%Vor%     
Kirk Woll 13.08.2010, 13:04
quelle
7

Versuchen Sie field.setAccessible(true) , bevor Sie field.get(this) aufrufen. Standardmäßig werden Modifikatoren berücksichtigt, die jedoch deaktiviert werden können.

    
Thomas Lötzer 13.08.2010 13:04
quelle

Tags und Links