class A {
private TypeA a;
Private TypeB b;
...
Private TypeZ z;
...getters/setters...
public add(Object o) {
//blablabla
}
public testMethod() {
add(a);
add(b);
add(c);
......
add(z);
/** here instead of calling add(a), add(b), add(c) one by one, I want to use reflection.
** something like:
** foreach(Field f : getDeclaredFields()) {
** add(f.getTheObjectReference()); <-- I made this method "getTheObjectReference" up
** }
**/
}
}
所以在这个例子中,我可以使用getDeclaredFields得到所有字段Field [a-z],但是一旦我有了Field对象,我该如何将它转换为实际的对象引用? Field类中没有名为“getTheObjectReference”的方法。有什么想法吗?
答案 0 :(得分:4)
如果您尝试获取“当前”实例的字段值(调用了testMethod()
方法的实例),您只想使用this
来调用Field.get
作为目标:
add(f.get(this));
答案 1 :(得分:2)
您是否尝试使用
for(Field field : getClass().getDeclaredFields()) {
Object o = field.get(this);
add(o);
}
答案 2 :(得分:0)
您尝试做的事情是不可能的,因为Field实例引用了泛型类方法,而不是特定的类实例方法!