Java Reflection isArray()始终为false

时间:2009-06-16 08:59:05

标签: java arrays reflection

我有一个关于Java Reflections的问题:如果某个类的某个字段是数组,我必须结帐。 但我的问题是:如果我直接在类的属性上运行isArray(),它的工作原理。但是如果我在下面的方式中使用它,它就不会工作。我猜因为“真正的”数组在这个Field类中? 任何想法我如何让它工作 - 我认为错过了一个演员还是那样的? 谢谢!

Field fields[] = object.getClass().getDeclaredFields();

for (Field field : fields) {
    if (field.getClass().isArray()) {
        //Always false.
    }
}

3 个答案:

答案 0 :(得分:7)

答案 1 :(得分:4)

您的代码应该是

Field fields[] = obj.getClass().getDeclaredFields();

for(Field field : fields) {
  if(field.getType().isArray()){
     //Actually works
  }
}

使用field.getClass()将始终返回Field.class或Field *的子类的Class实例。

*我为这样一个令人费解的措辞道歉。

答案 2 :(得分:0)

您正在测试Fields的各个元素,而不是数组本身。