4

我想使用枚举作为切换字符串的一种方式,但是 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;
        }
    }
}

我能为此做些什么?

4

3 回答 3

5

这在 Java 中是不可能的,因为每个项目都必须是一个有效的标识符(并且有效的 Java 标识符可能不包含破折号)。

于 2013-03-27T18:30:14.533 回答
3

这在 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.

于 2013-03-27T18:42:34.527 回答
0

块引用

枚举是类,应该遵循类的约定。枚举的实例是常量,应该遵循常量的约定。

块引用

可以在以下链接中找到有关此的详细信息

编码约定 - 命名枚举 希望它有所帮助

于 2013-03-27T18:30:05.560 回答