The HIRO Says

If you smell what The HIRO is cooking!!!

【enum】基本的な定義の仕方

まず、enum 型の基本的な定義方法を見て、enum 型のメリットを確認してみましょう。


定義の仕方

  1. 型は、class でも interface でもなく、enum を指定します。
  2. 型なしで、定数名のみを順番に定義します。
  3. 定数は、順番にカンマ区切りで定義し、最後はセミコロンで区切ります。
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 型には、変数やメソッドの追加、任意のインターフェースの実装など、まだまだできることが色々とあります。
次回は、変数やメソッドの追加方法を説明します。