我有以下课程:
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?
}
}
但我不知道如何进一步推动它。
答案 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。