まず、enum 型の基本的な定義方法を見て、enum 型のメリットを確認してみましょう。
定義の仕方
- 型は、class でも interface でもなく、enum を指定します。
- 型なしで、定数名のみを順番に定義します。
- 定数は、順番にカンマ区切りで定義し、最後はセミコロンで区切ります。
public enum Season {
// 春
SPRING,
// 夏
SUMMER,
// 秋
AUTUMN,
// 冬
WINTER;
使い方
(1)指定の仕方
Season.SPRING のように、型名.定数名で指定します。
(2)標準出力
例えば、System.out.println(Season.SUMMER) と指定すると、"SUMMER"と表示されます。
int enum pattern だと、標準出力しても整数値しか表示されません。
そう考えると、デバッグなどでの値の識別がし易くなっていることが分かります。
(3)全ての定数の確認
以下のような方法で、enum 型に定義した全定数を標準出力できます。
for (Season s : Season.values()) {
System.out.println(s);
}
単なる定数定義にすぎない int enum pattern の場合、こうした機能は自力で作成する必要がありました。
enum 型では values() メソッドが標準で用意されているので、ループ処理が必要な場合も安心です。
(4)他の enum 型との比較
例えば、四則演算記号を表す Operator という enum 型があったとします。
if (Season.Winter == Operator.PLUS) {…
こういうコードは、比較する enum 同士の型が違うということで、コンパイルエラーになります。
int enum pattern だと、こうした芸当ができませんでした。
そういう意味では、型の安全性が高まったと言えるかもしれません。
もっと色々できる!
enum 型には、変数やメソッドの追加、任意のインターフェースの実装など、まだまだできることが色々とあります。
次回は、変数やメソッドの追加方法を説明します。