我有一个关于Java Reflections的问题:如果某个类的某个字段是数组,我必须结帐。 但我的问题是:如果我直接在类的属性上运行isArray(),它的工作原理。但是如果我在下面的方式中使用它,它就不会工作。我猜因为“真正的”数组在这个Field类中? 任何想法我如何让它工作 - 我认为错过了一个演员还是那样的? 谢谢!
Field fields[] = object.getClass().getDeclaredFields();
for (Field field : fields) {
if (field.getClass().isArray()) {
//Always false.
}
}
答案 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的各个元素,而不是数组本身。