(1) Javaのenumとは?意味や用途を様々な利用シーンでご紹介
(1-1) enumとは?
(1-2) 構文(enumの定義)
(1-3) 様々なenumの使用例
(1) Javaのenumとは?意味や用途を様々な利用シーンでご紹介
(1-1) enumとは?
enumは定数の配列を定義する時に使う特別なクラス(Class)の種類です。通常のクラスと似た形で変数やメソッドを定義できます。EnumはJava 5より導入されています。
(1-2) 構文(enumの定義)
次のようにクラスに似た作りになっています。通常「public class」や「public interface」と記述する所を「enum」と記述しています。
public enum [enum名] {
[enumの変数やメソッドを実装]
}
一つ例をご紹介します。
(例)
public enum Size {
LARGE,
MEDIUM,
SMALL
}
このenumを実際に使う際は次のように記述する事ができます。
Size sz = Size.MEDIUM;
この「sz」という名前の変数の型が、先程定義したenumの「Size」になっており、この変数「sz」は「Size」enumの定数のうち、どれか一つを受け取る事ができます(LARGE、MEDIUM、SMALLのいずれか)。
(1-3) 様々なenumの使用例
①if文での使用
if文での値の比較も通常のクラスと同じ要領で行えます。
Size sz = Size.MEDIUM;
if( sz == Size.LARGE) {
//LARGEの時の処理
} else if( sz == Size.MEDIUM) {
//MEDIUMの時の処理
} else if( sz == Size.SMALL) {
//SMALLの時の処理
}
(サンプルプログラム)
※上記構文にmain文やenum定義を補記して、実行可能にしたサンプルPG
public class IT0223_enumSample1_if {
public static void main(String args[]) {
Size1 sz = Size1.MEDIUM;
// if分岐でenum使用するサンプル
if(sz == Size1.LARGE) {
System.out.println("This is LARGE");
}else if(sz == Size1.MEDIUM) {
System.out.println("This is MEDIUM");
}else if(sz == Size1.SMALL) {
System.out.println("This is SMALL");
}
}
}
enum Size1 {
LARGE,
MEDIUM,
SMALL
}
(図131)

②for文での使用
下記のサンプルはenumで定義した変数をforループで順次取得するプログラムです。コンソールにはenumの変数自体の名前が表示されます。
//ループ処理で定義値の取得が可能
for (Size sz : Size.values()) {
System.out.println(sz);
}
(サンプルプログラム)
※上記構文にmain文やenum定義を補記して、実行可能にしたサンプルPG
public class IT0223_enumSample2_for {
public static void main(String args[]) {
for(Size2 sz : Size2.values()) {
System.out.println(sz);
}
}
}
enum Size2 {
LARGE,
MEDIUM,
SMALL
}
(図132)

③switch文での使用
enumはswitch文の中で与える事もできます。switch文の中で使用する利点として、Size型の変数szはenumで定義した「LARGE、MEDIUM、SMALL」のいずれかの値しか取り得ないため、プログラムのバグを防ぐ役割も果たします。
Size sz = Size.MEDIUM;
switch (sz) {
case LARGE : [LARGEの時の処理]; break;
case MEDIUM : [MEDIUMの時の処理]; break;
case SMALL : [SMALLの時の処理]; break;
}
(サンプルプログラム)
※上記構文にmain文やenum定義を補記して、実行可能にしたサンプルPG
public class IT0223_enumSample3_switch {
public static void main(String args[]) {
Size3 sz = Size3.SMALL;
switch (sz) {
case LARGE : System.out.println("Size is LARGE"); break;
case MEDIUM : System.out.println("Size is MEDIUM"); break;
case SMALL : System.out.println("Size is SMALL"); break;
}
}
}
enum Size3 {
LARGE,
MEDIUM,
SMALL
}
//toStringメソッドでStringに変換 String sz_str = Size.SMALL.toString();
(サンプルプログラム)
※上記構文にmain文やenum定義を補記して、実行可能にしたサンプルPG
public class IT0223_enumSample4_convert {
public static void main(String args[]) {
//enumをStringに変換
String sz_str = Size4.SMALL.toString();
System.out.println(sz_str);
//enumのままでも出力できる
System.out.println(Size4.SMALL);
//ただし、同じ表示結果でも型は異なる
//(型のチェック)
if(sz_str instanceof String) { System.out.println("It's String"); }
if(Size4.SMALL instanceof Size4) { System.out.println("It's Size4"); }
}
}
enum Size4 {
LARGE,
MEDIUM,
SMALL
}
//valueOfメソッドで引数に指定した値に対応するenumインスタンスを返却
Size sz = Size.valueOf("LARGE");
(サンプルプログラム)
※上記構文にmain文やenum定義を補記して、実行可能にしたサンプルPG
public class IT0223_enumSample5_valueof {
public static void main(String args[]) {
Size5 sz = Size5.valueOf("LARGE");
System.out.println(sz);
}
}
enum Size5 {
LARGE,
MEDIUM,
SMALL
}
(図135)
