Java 如何从另一个字符串中获取字符串值
这听起来很奇怪,但实际上很简单 简短描述:我有一个名为Java 如何从另一个字符串中获取字符串值,java,android,string,Java,Android,String,这听起来很奇怪,但实际上很简单 简短描述:我有一个名为 public static final String ACCELEROMETER_X = "AccX"; 在一个函数中,我这样做,它从一个枚举中获取“Accelerator_X”(sensors是我的枚举的一个arrayList) 重点是我想在专栏中介绍的不是“Accelerator_X”,而是“AccX”。有什么想法吗?我知道我可以使用switch和cases来实现,但是我的enum有30多个值,所以我更喜欢其他“更干净”的方式来实现它
public static final String ACCELEROMETER_X = "AccX";
在一个函数中,我这样做,它从一个枚举中获取“Accelerator_X”(sensors是我的枚举的一个arrayList)
重点是我想在专栏中介绍的不是“Accelerator_X”,而是“AccX”。有什么想法吗?我知道我可以使用switch和cases来实现,但是我的enum有30多个值,所以我更喜欢其他“更干净”的方式来实现它。解决方案1:如果您将值保留在类中 创建一个以key作为id(accelerator_X)和value作为“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());
如果希望用该字符串值替换
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()
在
enum
中添加此
public String getAccelerometerX (){
return ACCELEROMETER_X ;
}
然后:
for i... columns = columns + sensors.get(i).getAccelerometerX ()
我认为您要做的是从
字符串中的名称中获取字段的值,如果是这种情况,您可以这样做:
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"
当然,您必须捕获一些异常。请提供更多信息,说明您想要完成什么以及在循环中正在做什么。一旦您意识到,enum
只是类的语法糖,正如Rohit所示,那么一切就变得简单了。
for i... columns = columns + sensors.get(i).getAccelerometerX ()
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"