我如何能够检索具有动态名称
的变量的值例如,我有常量列表
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
答案 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。