我需要创建一个方法,以变量的名称作为输入,搜索类,并输出该变量指向的值。但是,正如您可能已经猜到的那样,我遇到了问题:
public String myMethod(String varname) {
return varname;
}
如您所见,以上所有操作都是返回输入字符串。有没有办法让它做其他事情?
编辑:对于那些请求解释的人,这里是:
假设我有以下代码:
String foo = "foo";
String bar = "bar";
我想创建一个采用变量名称并返回其值的方法。所以,如果我使用上面的方法编写myMethod(foo)
,输出将是“foo”;同样,我希望myMethod(bar)
给出“bar”。
答案 0 :(得分:4)
使用Java Reflection 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"
<强> DEMO 强>