我有一个Object Human:
public class Human {
String name;
public Human(String name){
this.name = name;
}
}
在我的主要课程中,我有一个人类“约翰”的实例 使用名为getVarOfObject()的函数,我想得到John的名字:
public class Example {
public static Object getVarOfObject(Object obj, Object var){
return obj.var;
}
public static void main(String[] args) {
Human john = new Human("John");
String johnsName = getVarOfObject(john, name);
}
}
我知道你可以输入john.name,但在我的情况下,我需要一个可以做到这一点的功能。
答案 0 :(得分:2)
除反射外,你不能这样做。
请注意,这种魔法可能导致错误,细微问题,异常,性能损失,窒息,溺水,死亡,瘫痪或火灾。
对象obj
是对象,字符串field
是字段的名称。
Class clazz=Human.getClass(); //or for class-independence use `obj.getClass()`.
Field fd=clazz.getField(name);
fd.get(obj);
答案 1 :(得分:2)
为什么不使用访问器方法(getter和setter)?
在Human
:
public String getName() {
return name;
}
并在您的主要方法中:
Human john = new Human("John");
String johnsName = john.getName();
答案 2 :(得分:2)
您可以使用此代码
Field field = <Your object>.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
return (String) field.get(object);