我想知道,是否可以通过将值从另一个变量传递给对象来调用其他类的变量。
这样的事情:
class Foo {
public String classVar = "hello";
}
然后我们创建一个类的对象:
Foo bin = new Foo();
现在,我知道我们可以使用var by:
bin.classVar;
但是,假设值classVar
在另一个字符串变量中:
Foo bin = new Foo();
String var2 = "classVar";
bin.var2 ??????????
如何实现这一目标?
答案 0 :(得分:2)
变量名在Java中是静态类型的。你不能像这样动态制作它们。如果你真的需要它,你可以使用反射。
答案 1 :(得分:0)
您可以使用反射来获取它。
Foo bin = new Foo();
现在,Foo有一个变量" classVar"。
所以,你这样做:
Field f1[] = Foo.class.getDeclaredFields();
for(Field f:f1)
{
if(f.getName().equals("classVar"))
System.out.println(f.get(bin)); //Get the value
}
答案 2 :(得分:0)
你可以通过在try-catch块中使用一行代码来实现这一点,如下所示:
try {
var2 = (String) bin.getClass().getField("classVar").get(bin);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
P.S。如果不能很好地控制,使用反射通常会有风险。但如果仔细处理,它将极大地提高您的编码灵活性。