在Java中按字段名称查找对象的值

时间:2015-05-18 11:52:55

标签: java

我有以下课程:

class MyClass {
private String Foo;
private String Bar;
//Getters, Setters, Constructors
}

我有一个对象:

MyClass object1 = new MyClass("Text1", "Text2");

现在,我有一个带字段名称的XML,类似于:

<item ... fieldName="Foo" ... />

我想从XML(Reflection?)

中的fieldName获取对象的值

我尝试过类似的东西:

    String[] array = { /* fieldNames from XML */ };
    for(Field f : object1.getClass().getDeclaredFields()){
        for(String s : array){
            if(f.getName() == s )
                //How to get value?
        }
    }

但我不知道如何进一步推动它。

3 个答案:

答案 0 :(得分:2)

我不确定这是不是你所追求的,但是如果你想通过将它的名字作为字符串来调用方法,那就是你的方法:

MyClass myClass = new MyClass("foo", "bar");
Method method = myClass.getClass().getMethod("getFoo");
String string = (String) method.invoke(myClass);

使用try catch块进行环绕

答案 1 :(得分:0)

试试这个:

String fieldName = (String) field.get(objec1);

答案 2 :(得分:0)

即使您已经接受了答案,它也可以通过方法反射来实现,它具有一些缺点,例如性能开销或从字段名称中重新获取正确的getter。 我会在代码中执行字段反射:

for(String s:array){
    Field myField = obj.getClass().getDeclaredField(s);
    String myVal =(String) myField.get(obj);
    /*Your code with the myVal....*/
}

还要查看Field javadoc。