使用变量名称访问并设置静态变量

时间:2012-06-09 20:57:13

标签: java

我想要做的是使用字符串访问存储在一个类中的变量。 例如,我有

public class Values {
    public static boolean enabled;
}

然后在项目的不同部分,我有对象和带有字段名称的字符串。如何获取和设置字段的值?

3 个答案:

答案 0 :(得分:8)

如果您将名称作为字符串,则应使用反射:

import java.lang.reflect.Field;


public class Values {

    public static boolean enabled = false;

    public static void main(String[] args) throws Exception {           
        Values v = new Values();

        Field field = v.getClass().getField("enabled");

        field.set( v, true );

        System.out.println( field.get(v) );         
    }

}

答案 1 :(得分:1)

Values.enabled = true;

Values.enabled = false;

或者,您可以为Values类创建静态getter和setter,并调用这些静态方法。

答案 2 :(得分:1)

@Maricio Linhares的回答非常好;但请注意,反射很慢。如果你这么做很多,你可能会遇到性能问题。另一种方法可能是使用地图。代码将遵循

public class Values {
    public static Map<string,bool> variableMap;

    public static void main(String[] args) throws Exception {           
        // adding a 'variable'
        variableMap = new YourFavoriteMapImplementation();
        variableMap.put("enabled",true);

        // accessing the 'variables' value
        bool val = variableMap.get("enabled");
        System.out.println(val);         
    }
}