Java Reflection holt die Instanz von einem Feld

8

gibt es eine Möglichkeit, die Instanz von einem Feld zu holen?
Hier ist ein Beispielcode:

%Vor%

Ich muss Reflection verwenden, weil ich es mit Anmerkungen verwende. Dies ist nur ein "Beispiel", die Methode AppleList.add(Apple apple) wird tatsächlich aufgerufen, indem die Methode von der Klasse abgerufen und dann aufgerufen wird.

und tun, wie: method.invoke( appleList, field );

verursacht: java.lang.IllegalArgumentException: argument type mismatch

* BEARBEITEN * Dies könnte für jemanden hilfreich sein, der dasselbe sucht.

Wenn die Klasse Person 2 oder mehr Apple-Variablen hatte:

%Vor%

wenn ich das Feld bekomme, wie:

%Vor%

am Anfang, indem Sie nur auf die Zeile schauen: (Apple) field.get( person );
ließ mich denken, dass es gehen und eine Instanz bekommen würde, die Apple-Klasse entspricht.
deshalb habe ich mich gefragt: "Welchen Apple wird es zurückgeben?"

    
sam 11.10.2012, 21:03
quelle

1 Antwort

11

Das Feld ist kein Apfel selbst - es ist nur ein Feld. Da es sich um ein -Instanz -Feld handelt, benötigen Sie eine Instanz der deklarierenden Klasse, bevor Sie einen Wert abrufen können. Sie möchten:

%Vor%

... nachdem das apple -Feld bevölkert für die Instanz ist, die natürlich person ist.

    
Jon Skeet 11.10.2012, 21:05
quelle

Tags und Links