列挙型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)
となる。