【问题标题】:Java Reflection isArray() always falseJava 反射 isArray() 总是假的
【发布时间】:2009-06-16 08:59:04
【问题描述】:

我有一个关于 Java 反射的问题:如果某个类的某个字段是数组,我必须检查一下。 但我的问题是:如果我直接在类的属性上运行 isArray() ,它就可以工作。但是如果我按照下面的方式使用它,它就不起作用了。我猜是因为“真实”数组在这个 Field 类中? 知道我如何让它工作 - 我认为缺少演员或类似的东西吗? 谢谢!

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

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

【问题讨论】:

    标签: java arrays reflection


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      你的代码应该是这样的

      Field fields[] = obj.getClass().getDeclaredFields();
      
      for(Field field : fields) {
        if(field.getType().isArray()){
           //Actually works
        }
      }
      

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

      *我为这样一个措辞混乱的句子道歉。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 对不起,我一点也不明白。 “领域元素?”数组有元素。字段没有。
        • 'fields' 在变量 'fields' 中。
        猜你喜欢
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-28
        • 2019-10-11
        • 2020-10-13
        • 1970-01-01
        • 2011-06-20
        相关资源
        最近更新 更多