[英]How to get an String value from another String
这听起来很奇怪,但实际上很简单。
简短说明:我有一个名为的类变量
public static final String ACCELEROMETER_X = "AccX";
在一个函数中,我执行了此操作,该操作从枚举中获取“ ACCELEROMETER_X”(传感器是枚举的arrayList)。
for i...
columns = columns + sensors.get(i).name()
关键是我想在列中引入的不是“ ACCELEROMETER_X”,而是“ AccX”。 任何想法? 我知道我可以使用switch和case来做到这一点,但是我的枚举有30多个值,因此Id宁愿选择其他“更干净”的方式来做到这一点。
如果希望用该字符串值替换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:如果将价值保留在课堂上
创建一个键为id(ACCELEROMETER_X),值为“ AccX”的Map,当您从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");
}
在您的enum
添加此
public String getAccelerometerX (){
return ACCELEROMETER_X ;
}
接着:
for i... columns = columns + sensors.get(i).getAccelerometerX ()
我认为您要尝试的是从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"
当然,您必须捕获一些异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.