通过反射获取String变量的值



我有一个POJO,里面有很多字符串,我想要一个简单的方法来检查它们是否都是空的/包含某个字符/什么。

我用这个得到字符串变量:

    Field[] fields = this.getClass().getDeclaredFields();
    for (Field f : fields) {
        if (f.getType() == java.lang.String.class) {
            Log.d("REF", "Field: " + f.getName());
        }
    }

但我不知道如何获取字段的String值。它是如何完成的?

您需要调用:

Object val = f.get(this); 

OR获取字符串对象:

String strval = (String) f.get(this); 

以获得由f的值表示的字段。

参见:Field#Get(Object)

另外:Getting and Setting Field Values

您可以尝试此代码来获得值:

for (Field f : fields) {
   if (f.getType() == java.lang.String.class) {
        Log.d("REF", "Field: " + f.getName());
        String s = (String)f.get(this);
   }
}

对于任何对象,都应该使用Field#get(object)方法。由于String是java中的一个对象,因此:

        String str = (String)f.get(this);

相关内容

  • 没有找到相关文章

最新更新