如何从另一个String获取String值

时间:2013-07-27 11:46:21

标签: java android string

这听起来很奇怪但实际上很简单。

简短描述:我有一个名为

的类变量
public static final String ACCELEROMETER_X = "AccX";

在一个函数中,我这样做,从枚举中得到“ACCELEROMETER_X”(传感器是我枚举的数组列表)。

for i...
    columns = columns + sensors.get(i).name()

关键是我想在列中引入“ACCELEROMETER_X”,而不是“AccX”。任何的想法?我知道我可以使用开关和案例来做到这一点,但我的枚举有超过30个值,所以我更喜欢其他“更清洁”的方式来做它。

4 个答案:

答案 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"

当然,你必须抓住一些例外。