动态变量名称Java

时间:2011-04-27 14:36:49

标签: java

我如何能够检索具有动态名称

的变量的值

例如,我有常量列表

public class Constant{
    public static final String S_R = "Standard(240)";
    public static final String S_W = "Standard(180)";
    public static final String L_R = "Large(360)";
    public static final String L_W = "Large(280)";
}

基于数据库,我构建了一个变量名

String varName = "S" + "_"  +"R"; // This can be S_R , S_W , L_R or L_W
String varVal = // How do i get value of S_R

3 个答案:

答案 0 :(得分:9)

使用带有变量名称的普通HashMap作为其值的字符串。或者使用EnumMap将枚举作为键,将值作为值。 AFAIK,这是使用Java时最接近的。当然,你可以搞砸反射,但IMO的地图方法更合乎逻辑。

答案 1 :(得分:1)

您可以使用Map<String, String>并按键找到值。

更好的是,您可以拥有enum

public enum Foo {
    S_R("Standard", 240),
    S_W("Standard", 180),...;

    private String type;
    private String duration;

    // constructor and getters
}

然后拨打Foo.valueOf(name)

(你也可以通过反射 - Constants.class.getField(fieldName)然后调用field.get(null)(静态为null)。但这不是一个好方法。)

答案 2 :(得分:0)

如果你真的必须这样做(并且它不太可能),你将不得不使用Java&#34;反射&#34;的API。