我有一个类似于以下内容的枚举类:
public enum MyEnum {
VALUE1("value.1"),
VALUE2("value.2");
private String value;
private MyEnum(String value) { this.value = value; }
public String getId() { return id; }
}
Run Code Online (Sandbox Code Playgroud)
我想对枚举的值有一个switch语句.类似于以下内容:
switch (myString) {
case MyEnum.VALUE1.getId():
...
}
Run Code Online (Sandbox Code Playgroud)
我得到以下编译时错误:case表达式必须是常量表达式.
有没有办法让它与enum和switch语句一起使用?我在枚举中添加值的原因是因为我想要一些带有"."的ID.和其他不允许的字符.
添加一个静态方法,接受String id作为参数并返回相应的MyEnum:
public enum MyEnum {
VALUE1("value.1"),
VALUE2("value.2");
private String id;
private MyEnum(String value) {
this.id = value;
}
public String getId() {
return id;
}
public static MyEnum fromId(String id){
for(MyEnum e:MyEnum.values()){
if(e.getId().equals(id)){
return e;
}
}
throw new RuntimeException("Enum not found");
}
public static void main(String[] args) {
String value = "value.2";
switch(MyEnum.fromId(value)){
case VALUE1:
System.out.println("ID 1");
break;
case VALUE2:
System.out.println("ID 2");
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2001 次 |
| 最近记录: |