Java 当字符串包含破折号时打开枚举
我想使用enum作为切换字符串的一种方式,但是java抱怨我的字符串包含“-”。如以下代码所示,其中IC19-01和IC19-02包含“-” 我能为此做些什么 大宗报价 枚举是类,应该遵循类的约定。枚举实例是常量,应遵循常量的约定 大宗报价 有关详细信息,请访问以下链接Java 当字符串包含破折号时打开枚举,java,enums,switch-statement,Java,Enums,Switch Statement,我想使用enum作为切换字符串的一种方式,但是java抱怨我的字符串包含“-”。如以下代码所示,其中IC19-01和IC19-02包含“-” 我能为此做些什么 大宗报价 枚举是类,应该遵循类的约定。枚举实例是常量,应遵循常量的约定 大宗报价 有关详细信息,请访问以下链接 希望对您有所帮助这在Java中是不可能的,因为每个项都必须是有效的标识符(并且有效的Java标识符可能不包含破折号)。这在Java中是不可能的。但是您可以将自己的实现作为一种变通方法,尽管它会产生更多的代码。您可以按如下方式更
希望对您有所帮助这在Java中是不可能的,因为每个项都必须是有效的标识符(并且有效的Java标识符可能不包含破折号)。这在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中,您应该能够切换实际的字符串
,为什么不将-
替换为
(下划线)?只有当这是最后一个选项时,我才会这样做。如果可能的话,我想保持我的代码干净。这个解决方案永远不会工作(current.equalsIgnoreCase不存在)equalsIgnoreCase是String中的一个方法,它的目的是在检查之前获取current的名称。编辑以反映这一变化
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;
}
}