0
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[az],但是一旦我有了 Field 对象,如何将其转换为实际的对象引用?Field 类中没有名为“getTheObjectReference”的方法。有任何想法吗?

4

3 回答 3

4

如果您尝试获取“当前”实例(testMethod()调用您的方法的实例)的字段值,您只想调用Field.getwiththis作为目标:

add(f.get(this));
于 2012-10-17T13:35:54.627 回答
2

您是否尝试使用

for(Field field : getClass().getDeclaredFields()) {
    Object o = field.get(this);
    add(o);
}
于 2012-10-17T13:36:34.970 回答
0

您尝试做的事情是不可能的,因为 Field 实例是指通用类方法,而不是特定的类实例方法!

于 2012-10-17T13:36:28.680 回答