【enum】変数とメソッドの追加
enum には、変数とメソッドを定義することもできます。
…といっても、基本的な定義方法は、通常のクラス定義と同じです。
ただ、それだけだと面白みがないので、今回は enum ならではの定義方法を説明しようと思います。
enumならではの変数の定義方法
初めはこういう定義だったとすると…
public enum Season { // 春 SPRING, // 夏 SUMMER, // 秋 AUTUMN, // 冬 WINTER;
↓
このように変更できます。
public enum Season { // (3)インスタンス変数をセットするよう変更 // 春 SPRING("あけぼの"), // 夏 SUMMER("夜"), // 秋 AUTUMN("夕暮れ"), // 冬 WINTER("つとめて"); // (1)インスタンス変数を追加 private final String word; // (2)インスタンス変数を受け取るコンストラクタを追加 private Season(String word) { this.word = word; }
メソッドの定義方法
例えば上記の Season クラスで、新たに追加したインスタンス変数 word の getter を作りたい場合は、普通のクラスと同様、以下の定義を追加すればOKです。
public String getWord() { return this.word; }
変数とメソッドの追加のメリット
例えば、こんなことができるようになります。
public void testPrintf() { for (Season season : Season.values()) { System.out.printf( "%s is %s.%n", season.toString(), season.getWord()); } }
↓実行結果はこちら。
SPRING is あけぼの. SUMMER is 夜. AUTUMN is 夕暮れ. WINTER is つとめて.
例はアレですが、これまでの int や String の enum ではできなかったような、定数句独自のデータや処理を簡単に追加できるようになることが分かると思います。