0

我有一个对象人类:

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 但在我的情况下,我需要一个可以做到这一点的函数。

4

3 回答 3

2

您可以使用此代码

        Field field = <Your object>.getClass().getDeclaredField(fieldName);
        field.setAccessible(true);
        return (String) field.get(object);
于 2013-09-02T11:16:13.007 回答
2

为什么不使用访问器方法(getter 和 setter)?

Human

public String getName() {
    return name;
}

在你的主要方法中:

Human john = new Human("John");
String johnsName = john.getName();
于 2013-09-02T11:13:20.123 回答
2

除了反思,你不能这样做。

请注意,这种魔法可能导致错误、微妙的问题、异常、性能损失、窒息、溺水、死亡、瘫痪或火灾。

Objectobj是对象,Stringfield是字段的名称。

Class clazz=Human.getClass(); //or for class-independence use `obj.getClass()`.
Field fd=clazz.getField(name);
fd.get(obj);
于 2013-09-02T11:09:21.727 回答