Java Reflection从Field获取实例

有没有办法从一个领域获得实例?
这是一个示例代码:

public class Apple { // ... a bunch of stuffs.. } public class Person { @MyAnnotation(value=123) private Apple apple; } public class AppleList { public add(Apple apple) { //... } } public class Main { public static void main(String args[]) { Person person = new Person(); Field field = person.getClass().getDeclaredField("apple"); // Do some random stuffs with the annotation ... AppleList appleList = new AppleList(); // Now I want to add the "apple" instance into appleList, which I think // that is inside of field. appleList.add( .. . // how do I add it here? is it possible? // I can't do .. .add( field ); // nor .add( (Apple) field ); } } 

我需要使用Reflection,因为我正在使用它带注释。 这只是一个“样本”,方法AppleList.add(Apple apple)实际上是通过从类中获取方法然后调用它来调用的。

并且这样做,如: method.invoke( appleList, field );

cause: java.lang.IllegalArgumentException: argument type mismatch

* 编辑 *这可能对正在寻找同样事物的人有所帮助。

如果是Person类,则有2个或更多Apple变量:

 public class Person { private Apple appleOne; private Apple appleTwo; private Apple appleThree; } 

当我得到Field时,如:

 Person person = new Person(); // populate person Field field = person.getClass().getDeclaredField("appleTwo"); // and now I'm getting the instance... Apple apple = (Apple) field.get( person ); // this will actually get me the instance "appleTwo" // because of the field itself... 

一开始, (Apple) field.get( person );一下这条线:( (Apple) field.get( person );
让我觉得它会去找一个与Apple课程相匹配的实例。
这就是为什么我想知道:“苹果会回归哪个?”

这个领域不是苹果本身 – 它只是一个领域。 因为它是一个实例字段,所以在获得值之前需要一个声明类的实例。 你要:

 Apple apple = (Apple) field.get(person); 

…当然, 填充 apple字段用于被称为person的实例。