列挙型5

クラス内部で作ったときの補足&使えそうな技。

public class HogeClass3 {
  private enum Hoge5{  //privateで宣言できる
    A("im A"), B("im B");    //変数名と同じ制約
    
    public final String arg;
    private Hoge5(String arg){
      this.arg = arg;
    }
  }
  
  public void print(String param){
    Hoge5 h5 = Hoge5.valueOf(param);
    System.out.println(h5.arg);
  }
}
public class Test5 {
  public static void main(String[] args) {
    //Hoge5 hoge5 = Hoge5.B;    //これは参照できない
    HogeClass3 hc = new HogeClass3();
    hc.print("B");
  }
}


実行結果

im B


列挙子に存在しないパラメータを渡すと。

  hc.print("X");
Exception in thread "main" java.lang.IllegalArgumentException: X
  at hoge.enumtest.package3.HogeClass3$Hoge5.valueOf(HogeClass3.java:1)
  at hoge.enumtest.package3.HogeClass3.print(HogeClass3.java:17)
  at hoge.enumtest.Test5_2.main(Test5_2.java:20)

となる。