4

文字列を切り替える方法として 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;
        }
    }
}

これには何ができますか?

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 に答える