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






