这听起来很奇怪但实际上很简单。
简短描述:我有一个名为
的类变量public static final String ACCELEROMETER_X = "AccX";
在一个函数中,我这样做,从枚举中得到“ACCELEROMETER_X”(传感器是我枚举的数组列表)。
for i...
columns = columns + sensors.get(i).name()
关键是我想在列中引入“ACCELEROMETER_X”,而不是“AccX”。任何的想法?我知道我可以使用开关和案例来做到这一点,但我的枚举有超过30个值,所以我更喜欢其他“更清洁”的方式来做它。
答案 0 :(得分:1)
如果您希望将enum
常量替换为该字符串值,则更好的方法是将该字符串保留为enum
本身中的字段:
enum Sensor {
ACCELEROMETER_X("AccX"),
// Other constants
;
private final String abbreviation;
private Sensor(final String abbreviation) {
this.abbreviation = abbreviation;
}
@Override
public String toString() {
return abbreviation;
}
}
而不是:
sensors.get(i).name()
使用它:
sensors.get(i).toString()
答案 1 :(得分:0)
解决方案1:如果您将值保留在类
中使用key作为id(ACCELEROMETER_X)创建一个Map,并将值设置为“AccX”,当你从Enum获取值时,使用它来使用name()作为键从地图中查找值。
Map<String, String> map = new HashMap<String,String>();
map.put("ACCELEROMETER_X","AccX");
//some place where you want value from name
map.get(enumInstance.name());
解决方案2:更改枚举(更优选)
enum Some{
ACCELEROMETER_X("AccX");
}
答案 2 :(得分:0)
在enum
添加此
public String getAccelerometerX (){
return ACCELEROMETER_X ;
}
然后:
for i... columns = columns + sensors.get(i).getAccelerometerX ()
答案 3 :(得分:0)
我认为您要做的是从String
中获取其名称中的字段值,如果是这样,您可以执行以下操作:
public static final String ACCELEROMETER_X = "AccX";
// ...
Field field = MyClassName.class.getField("ACCELEROMETER_X");
String value = (String)field.get(new MyClassName());
System.out.println(value); // prints "AccX"
当然,你必须抓住一些例外。