[英]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.