0

我需要创建一个方法,将变量的名称作为输入,搜索类,并输出该变量指向的值。但是,正如您可能已经猜到的那样,我遇到了问题:

public String myMethod(String varname) {
    return varname;
}

如您所见,上述所有操作都是返回输入字符串。有没有办法让它做其他事情?

编辑:对于那些要求解释的人,这里是:

假设我有以下代码:

String foo = "foo"; String bar = "bar";

我想创建一个采用变量名称并返回其值的方法。因此,如果我使用上述方法并编写myMethod(foo),输出将是“foo”;同样,我想myMethod(bar)给“酒吧”。

4

1 回答 1

4

使用Java反射API。例如:

private String foo = "foo text";
private String bar = "some text";

public String myMethod(String varname) throws Exception {
  Class<?> c = this.getClass();
  Field field = c.getDeclaredField(varname);
  Object fieldValue = field.get(this);
  return fieldValue.toString();
}

// myMethod("foo") returns "foo text"
// myMethod("bar") returns "some text"

演示

参考:

于 2012-09-11T10:23:22.413 回答