我想使用enum作为切换字符串的方法,但是java抱怨我的字符串包含“ - ”。如下面的代码所示,IC19-01和IC19-02包含“ - ”。
public class CMain {
public enum Model {
IC19-01, IC19-02
}
public static void main(String[] args){
String st = "IC19-01";
switch (Model.valueOf(st)) {
case IC19-01:
System.out.println("Case IC19-01");
break;
}
}
}
我能为此做些什么?
答案 0 :(得分:4)
Java不可能这样做,因为每个项必须是有效的标识符(有效的Java标识符可能不包含破折号)。
答案 1 :(得分:2)
这在Java中是不可能的。但是你可以将自己的实现作为一种解决方法,尽管它会产生更多的代码。您可以更改enum
,如下所示:
public enum Model {
IC19_01("IC19-01"),
IC19_02("IC19-02")
private final String name;
private Model(String name){
this.name = name;
}
public String getName(){
return name;
}
public static Model getByName(String aName){
for(Model current: Model.values()){
if(current.getName().equalsIgnoreCase(aName.trim())){
return current;
}
}
return null;
}
}
然后,您应该可以致电Model.getByName(st)
而不是Model.valueOf
。或者,在Java 7中,您应该能够切换实际的String
。
答案 2 :(得分:0)