(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)