通过反射获取String变量的值

时间:2013-06-28 08:59:44

标签: java reflection

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

我用这个获取String变量:

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

    for (Field f : fields) {

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

    }

但我不知道如何获取Field的String值。怎么做?

3 个答案:

答案 0 :(得分:3)

您需要致电:

Object val = f.get(this); 

OR获取String对象:

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

获取由f的值表示的字段。

请参阅:Field#Get(Object)

另外:Getting and Setting Field Values

答案 1 :(得分:2)

您可以尝试使用此代码获取值:

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

答案 2 :(得分:1)

对于任何对象,您应该使用Field#get(Object)方法。因为String是java中的对象,因此:

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