一个使用enum实现多态的例子

下面的写法与直接 使用静态方法而言,可读性、可维护性更强
是不是有DSL的感觉....

当然enum反编译后,的确就是静态方法。

/**
 * Created by MyWorld on 2016/8/3.
 */
public enum Operation {
    PLUS("+") {
        @Override
        public int apply(int x, int y) {
            return x + y;
        }
    }, MINUS("-") {
        @Override
        public int apply(int x, int y) {
            return x - y;
        }
    }, TIMES("*") {
        @Override
        public int apply(int x, int y) {
            return x * y;
        }
    }, DIVIDE("/") {
        @Override
        public int apply(int x, int y) {
            return x / y;
        }
    };

    private String op;

    Operation(String op) {
        this.op = op;
    }

    public abstract int apply(int x, int y);

    public String getOp() {
        return op;
    }

    public void setOp(String op) {
        this.op = op;
    }

    public static void main(String[] args) {
        System.out.println(Operation.PLUS.apply(1, 2));
    }

}

感谢刘光聪在简书上的分享

原文地址:https://www.cnblogs.com/softidea/p/5734862.html