如何通过将值从另一个变量传递给对象来访问类变量?

时间:2016-03-31 12:17:15

标签: java oop object

我想知道,是否可以通过将值从另一个变量传递给对象来调用其他类的变量。

这样的事情:

class Foo {
   public String classVar = "hello";
} 

然后我们创建一个类的对象:

Foo bin = new Foo();

现在,我知道我们可以使用var by:

bin.classVar;

但是,假设值classVar在另一个字符串变量中:

Foo bin = new Foo();    
String var2 = "classVar";
bin.var2 ??????????

如何实现这一目标?

3 个答案:

答案 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。如果不能很好地控制,使用反射通常会有风险。但如果仔细处理,它将极大地提高您的编码灵活性。