参数'变量作为参数

时间:2013-09-02 11:07:33

标签: java function variables object parameters

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

3 个答案:

答案 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);
相关问题