【问题标题】:How to test whether the value of a Java field gotten by reflection is null?如何测试反射得到的Java字段的值是否为null?
【发布时间】:2011-11-22 14:13:54
【问题描述】:

我有

Field f = this.getClass().getFields()[0];

我需要知道fthis 中的值是否为nullgetInt()getDouble()这样的方法有很多,但是我没有找到像Object getData()或者isNull()这样的方法。有这样的方法吗?

【问题讨论】:

    标签: java reflection null field


    【解决方案1】:

    field.get(target) 返回Object。所以你可以检查if (field.get(this) == null) {..}

    如果字段是原始的,它将被包装。 int -> Integerchar -> Character

    【讨论】:

    • @stevemoretz 无需发誓。 target 是该字段所属的对象。例如:SomeClass object = new SomeClass(); Field field = object.getDelcaredField("fieldName"); field.get(object);所以在这种情况下,object 是上面的目标Bozho
    【解决方案2】:

    你需要从对象中获取字段然后检查它是否为空

    Field f = this.getClass().getFields()[0];
    if (f.get(this) == null)
      ...
    

    【讨论】:

    • 如果它有原始类型怎么办?
    【解决方案3】:

    你搜索的不够好:http://download.oracle.com/javase/6/docs/api/java/lang/reflect/Field.html#get%28java.lang.Object%29

    调用该方法,检查返回的对象是否为null。

    【讨论】:

      【解决方案4】:

      使用Object obj=f.get(this)并检查返回的对象(在本例中为obj)是否为空

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多