public class EnumExam { enum Animal { DOG, CAT, RAT, RABBIT }; public static void main(String[] args) { Animal a = Animal.DOG; switch(a){ case DOG: System.out.println("いぬ"); break; case CAT: System.out.println("ねこ"); break; case RAT: System.out.println("ねずみ"); break; case RABBIT: System.out.println("うさぎ"); break; default: System.out.println("?"); break; } } }
実行結果:
いぬ
public class EnumExam2 { enum Animal { DOG, CAT, RAT, RABBIT }; public static void main(String[] args) { // enum が取り得る値を列挙 for(Animal a : Animal.values()) { System.out.println(a.ordinal() + ":" + a.name()); } System.out.println("\n"); // 文字列から enum をインスタンス化 Animal c = Animal.valueOf("CAT"); System.out.println("CAT IS " + c.name()); Animal h = Animal.valueOf("HORSE"); System.out.println("HORSE IS " + h.name()); } }
実行結果:
0:DOG 1:CAT 2:RAT 3:RABBIT CAT IS CAT Exception in thread "main" java.lang.IllegalArgumentException: No enum const class com.snail.javaexam.EnumExam$Animal.HORSE at java.lang.Enum.valueOf(Enum.java:196) at com.snail.javaexam.EnumExam$Animal.valueOf(EnumExam.java:13) at com.snail.javaexam.EnumExam.main(EnumExam.java:28)
public class EnumExam3 { enum Animal { DOG("ぽち"){ @Override String sayHello(){ return "こんにちわん"; } }, CAT("みけ"){ @Override String sayHello(){ return "こんにちにゃお"; } }, RAT("ちゅーた"){ @Override String sayHello(){ return "こんにちちゅう"; } }, RABBIT("うさこ"){ @Override String sayHello(){ return "もぐもぐ"; } }; private String pName; Animal(String name){ pName = name; } @Override public String toString(){ return pName; } abstract String sayHello(); }; public static void main(String[] args) { // enum が取り得る値を列挙 for(Animal a : Animal.values()) { System.out.println(a.toString() + "\t「" + a.sayHello() + "」"); } } }
実行結果:
ぽち 「こんにちわん」 みけ 「こんにちにゃお」 ちゅーた 「こんにちちゅう」 うさこ 「もぐもぐ」
Swingのコンボボックスの選択肢なんかに使えそう。選択肢と、選択されたときの処理を列挙型(enum)で一緒に定義できる。