Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从另一个字符串中获取字符串值_Java_Android_String - Fatal编程技术网

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"