こんばんは。
オリンピックが始まりましたね。
夜更かししすぎないように気をつけねば。
ところで、enumって便利ですよね。
使いますよね。
数が限られているようなときに便利です。
Java7でStringがswitchに対応したので、switchに使えるというメリットはちょっと弱くなりました。
public enum Color { RED, GREEN, BRUE }
定数みたいに使えるのもgoodです。
public enum Operator { ADD("+") , SUBTRACT("-") , MULTIPLY("*") , DIVIDE("/") ; private final String mark; private Operator(String mark) { this.mark = mark; } public String getMark() { return this.mark; } }
ところでこれ、メソッドが生やせるんですよ。
Strategyパターンとかにいいですよね。
public enum Operator { ADD { @Override public int calc(int x, int y) { return x + y; } } , SUBTRACT { @Override public int calc(int x, int y) { return x - y; } } , MULTIPLY { @Override public int calc(int x, int y) { return x * y; } } , DIVIDE { @Override public int calc(int x, int y) { return x / y; } } ; public abstract int calc(int x, int y); }
でもなんか無駄に長いんですよね。
ラムダで書くと短くておしゃれでいいよね。
public enum Operator { ADD((x, y) -> x + y) , SUBTRACT((x, y) -> x - y) , MULTIPLY((x, y) -> x * y) , DIVIDE((x, y) -> x / y) ; private final BinaryOperator<Integer> func; private Operator(BinaryOperator<Integer> func) { this.func = func; } public int calc(int x, int y) { return this.func.apply(x, y); } }
っていうおはなしです。