|
J2SE 5.0 codeName Tiger
|
2006/07/25
|
@author k.mori
|
|
■■ コードを簡潔に書くための新文法 Enum ■■
◎
enum
型は、あるカテゴリーに属した複数の定数をひとまとまり
として取り扱うための仕組みです。J2SE 5.0 の enum は、
C や C++ の enum ように内部的に整数で定数を保持するものではなく、
タイプセーフ enum と呼ばれるパターンを実現したものになっています。
①関連する定数、例えば月や曜日といった定数を宣言する場合、
以下のようにstatic final intを使用して記述することがあります。
static final int
JANUARY=1, FEBRUARY=2, MARCH=3, APRIL=4,
MAY=5, JUNE=6, JULY=7, AUGUST=8,SEPTEMBER=9,
OCTOBER=10, NOVEMBER=11, DECEMBER=12;
|
②JDK5.0 enumキーワードを使用すると簡潔に宣言することができます。
以下は月を表す列挙型を宣言する例です。
enum Month {
JANUARY, FEBRUARY, MARCH, APRIL,
MAY, JUNE, JULY, AUGUST,SEPTEMBER,
OCTOBER, NOVEMBER, DECEMBER
}
|
②-1
enum Monthには、JANUARYからDECEMBERまでの12個の要素があります。
ここでは要素名を英大文字で記述しましたが、一般の識別子と同様に、
英小文字、数字、記号などを使用することもできます。
②-2 使用方法
1: public class EnumSample {
2:
3: // 列挙型を使用して月の名前を宣言する
4: enum Month {
5: JANUARY, FEBRUARY, MARCH, APRIL,
6: MAY, JUNE, JULY, AUGUST, SEPTEMBER,
7: OCTOBER, NOVEMBER, DECEMBER
8: }
9:
10: // 列挙型の変数を宣言して使用する
11: public static void main(String[] args) {
12: Month m=Month.JANUARY;
13: System.out.println(m); // ← JANUARYと表示する
14: System.out.println(Month.FEBRUARY); //←FEBRUARYと表示する
15: }
16: }
|
③ valuesメソッドの使い方
valuesメソッドを使用すると、列挙型の全要素を取得することができます。
EnumSample2.javaは、valuesメソッドと拡張forループを組み合わせて、
列挙型Monthの全要素を表示する例です。実行結果は以下のようになります。
JANUARY
FEBRUARY
MARCH
APRIL
MAY
JUNE
JULY
AUGUST
SEPTEMBER
OCTOBER
NOVEMBER
DECEMBER
1: public class EnumSample2 {
2:
3: // 列挙型を使用して月の名前を宣言する
4: enum Month {
5: JANUARY, FEBRUARY, MARCH, APRIL,
6: MAY, JUNE, JULY, AUGUST,
7: SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER
8: }
9:
10: // 拡張forループとvaluesメソッドを使用して
11: // 列挙型の全要素を表示する
12: public static void main(String[] args) {
13: for (Month m : Month.values()) {
14: System.out.println(m);
15: }
16: }
17: }
|
④その他に【equalsメソッド】【compareToメソッド】【ordinalメソッド】があります。
|