概述
有没有办法从一个领域获得实例?
这是一个示例代码:
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:参数类型不匹配
*编辑*
这可能对那些正在寻找同样事物的人有所帮助.
如果是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课程相匹配的实例.
这就是为什么我想知道:“苹果会回归哪个?”
最后
以上就是干净店员为你收集整理的java reflection list_Java Reflection从Field获取实例的全部内容,希望文章能够帮你解决java reflection list_Java Reflection从Field获取实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复