繁体   English   中英

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

[英]Find value of object by field name in Java

我有以下课程:

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

我有一个对象:

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

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

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

我想通过XML的fieldName从对象获取值(反射?)

我尝试过这样的事情:

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

但我不知道如何进一步发展。

我不确定这是否是您想要的,但是如果您想通过将方法的名称作为字符串来调用方法,则可以采用以下方法:

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

用try catch块包围

尝试这个:

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

即使您接受了答案,它也可以通过方法反射来工作,该方法具有一些缺点,例如性能开销或从字段名称中检索正确的吸气剂。 我将像您在代码中那样进行场反射:

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

还要查找Field javadoc。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM