我有一个对象人类:
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,但是在我的例子中,我需要一个函数来完成这个任务。
发布于 2013-09-02 11:16:13
您可以使用以下代码
Field field = <Your object>.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
return (String) field.get(object);发布于 2013-09-02 11:09:21
你不能这样做,除非仔细考虑。
请注意,此魔法可能导致错误、微妙问题、异常、性能损失、窒息、溺水、死亡、瘫痪或火灾。
对象obj是对象,字符串field是字段的名称。
Class clazz=Human.getClass(); //or for class-independence use `obj.getClass()`.
Field fd=clazz.getField(name);
fd.get(obj);发布于 2013-09-02 11:13:20
为什么不使用访问器方法(getter和setter)?
在Human中
public String getName() {
return name;
}在你的主要方法中:
Human john = new Human("John");
String johnsName = john.getName();https://stackoverflow.com/questions/18571775
复制相似问题