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)で一緒に定義できる。