Javaと情熱のあいだ

カステラとドーナツと珈琲

enum(列挙型)でinterfaceを使う

enum(列挙型)でinterfaceを使うと応用範囲が広がる。
複数のenumにinterfaceで定義したメソッドを実装することで
処理を簡略化する(たぶん簡略化されてる)サンプル。

public class EnumExec {

	public interface Fruit {
		public String getLang();
	}

	public enum FruitEn implements Fruit {
	    Banana("Banana")
	    , Apple("Apple")
	    , Lemon("Lemon")
	    , Orange("Orange")
	    , Peach("Peach");

	    // メンバ変数の定義
	    private String name;

	    // コンストラクタの実装
	    private FruitEn (String name) {
	      this.name = name;
	    }

	    public String getLang() {
	        return name + "(en)";
	    }
	}

	public enum FruitJa implements Fruit {
	    Banana("バナナ")
	    , Apple("りんご")
	    , Lemon("レモン")
	    , Orange("オレンジ")
	    , Peach("ピーチ");

	    // メンバ変数の定義
	    private String name;

	    // コンストラクタの実装
	    private FruitJa (String name) {
	      this.name = name;
	    }

	    public String getLang() {
	        return name + "(ja)";
	    }
	}

	public void execute(Fruit[] fruits) {

	    for (Fruit fruit : fruits ) {

	        System.out.println(fruit.getLang());
	        }
	        
	}

	/**
	 * 説明文。
	 * @param args
	 */
	@SuppressWarnings("unchecked")
	public static void main(String[] args) {

		EnumExec lang = new EnumExec();

		lang.execute(FruitJa.values());
		lang.execute(FruitEn.values());
	}
}