列挙型のクラスであるEnumについてのメモです。
ちなみにEnumの読み方はイナムまたはイニュームだそうです。
列挙型とは?
列挙型とは定数に近い情報などを扱うときに使われます。
例としてはプルダウンなどの選択肢やswitch文などの名詞などで直接文字をいれるのではなく、Enumをつかうことで選択肢を制御できます。
基本の使い方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
public enum Season { /** * 春 */ SPRING, /** * 夏 */ SUMMER, /** * 秋 */ AUTUM, /** * 冬 */ WINTER; } |
このようにSeasonというeum式で定義しておくことにより、この4つだけの文字で選択肢を作ることができます。
Enum側で呼び出す場合は以下のようにして呼び出します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
public static void main(String[] args) { Season season; season = Season.SPRING; switch( season ){ case SPRING: //caseでENUM定義以外のものを入力するとエラーになります。 System.out.print("季節は春です。あたたかいですね。"); break; case SUMMER: System.out.print("季節は夏です。とても暑いです。"); break; case AUTUM: System.out.print("季節は秋です。すずしくなってきました。"); break; case WINTER: System.out.print("季節は冬です。とても寒いですね。"); break; default: break; } //「季節は春です」が出力されます。 } |
key=value的な使い方
プルダウンなどですと一般的には表記だけでなくなんらかの値を含むことが一般的です。そのような場合は以下のように使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
public static void main(String[] args) { Season season; season = Season.SPRING; String seasonJa = season.getSeasonJa(); switch( season ){ case SPRING: //caseでENUM定義以外のものを入力するとエラーになります。 System.out.print("季節は" + seasonJa + "です。あたたかいですね。"); break; case SUMMER: System.out.print("季節は" + seasonJa + "です。とても暑いです。"); break; case AUTUM: System.out.print("季節は" + seasonJa + "です。すずしくなってきました。"); break; case WINTER: System.out.print("季節は" + seasonJa + "です。とても寒いですね。"); break; default: break; } } public enum Season { /** * 春 */ SPRING("春"),//中に値を含ませます。 /** * 夏 */ SUMMER("夏"), /** * 秋 */ AUTUM("秋"), /** * 冬 */ WINTER("冬"); private String seasonJa;//ここに値を記述します Season(String seasonJa){ this.seasonJa=seasonJa;//セッターに近いものです。 } public String getSeasonJa(){ return this.seasonJa;//ゲッターです。 } } |
Enumのメリット
なぜ文字でもOKなのにわざわざEnumを使うかというと、値を制御できます。IDEでしたら値がでてきますし、ここで定義しておけば他の全ての場所で同一のEnumを使いまわせます。
プルダウンの値など限られた選択肢を使うような場合はEnumを使いましょう。