Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

コンストラクター/フィールド/メソッドの定義

列挙型もまたクラスの一種ですから、配下にコンストラクターやフィールド/メソッドを定義することも可能です。

WeekdayEnum.java

public enum WeekdayEnum {
  Sunday("sun"),
  Monday("mon"),
  Tuesday("tue"),
  Wednesday("wed"),
  Thursday("thu"),
  Friday("fri"),
  Saturday("sat");

  // フィールド
  private String name;

  // コンストラクター
  private WeekdayEnum(String name) {
    this.name = name;
  }

  // メソッド
  @Override
  public String toString() {
    return this.name;
  }
}

列挙値に、それ自身の識別子とは別に(たとえば)表示のための値を持たせたい、などの目的がある場合には、この例のようにフィールドを準備します。この例であれば、曜日の短縮名をnameフィールドに持たせます。
フィールドは、一般的なクラスと同じく、コンストラクターで初期化できます。構文は基本的にクラスのそれに準じますが、アクセス修飾子はprivate固定となる点に注意してください(よって、サンプルのコードもprivateを省略しても意味は同じです)。
コンストラクターを定義したら、列挙定数もこれに合わせて「列挙定数(引数, ….)の形式で宣言する必要があります。また、以降のメンバー定義と区切りが明確になるように、列挙定数の末尾には「;」セミコロンを置きます。
最後にメソッドの定義です。ここでは、nameフィールドの値を取り出せるよう、toStringメソッドを定義しています。構文はクラスで学んだものと同様なので、特筆すべき点はありません。

以上のように定義した列挙型は、以下のように利用できます。

System.out.println(WeekdayEnum.Monday.toString());	// 結果:mon
enum型(列挙型)
列挙型を定義する – enum型
列挙型のメソッド
コンストラクター/フィールド/メソッドの定義

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職