3

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

public class Values {
    public static boolean enabled;
}

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

4

3 回答 3

9

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

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) );         
    }

}
于 2012-06-09T21:03:34.447 回答
1
Values.enabled = true;

或者

Values.enabled = false;

或者,您可以为该类创建一个静态 getter 和 setter,Values然后调用这些静态方法。

于 2012-06-09T21:00:18.550 回答
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);         
    }
}
于 2012-06-09T22:04:38.450 回答