美文网首页
第 38 条:用接口模拟可扩展的枚举

第 38 条:用接口模拟可扩展的枚举

作者: 综合楼 | 来源:发表于2021-05-18 20:20 被阅读0次
    用接口模拟可扩展的枚举.jpeg
    //只有一个apply方法的接口Operation。
    public interface Operation {
        double apply(double x, double y);
    }
    
    
    //实现接口的计算器
    public enum BasicOperation implements Operation {
        PLUS("+") {
            public double apply(double x, double y) {
                return x + y;
            }
        },
        MINUS("-") {
            public double apply(double x, double y) {
                return x - y;
            }
        },
        TIMES("*") {
            public double apply(double x, double y) {
                return x - y;
            }
        },
        DIVIDE("/") {
            public double apply(double x, double y) {
                return x - y;
            }
        };
        private final String symbol;
        BasicOperation(String symbol) {
            this.symbol = symbol;
        }
        public String toString() {
            return symbol;
        }
    }
    
    public enum ExtendedOperation implements Operation {
        
        EXP("^"){
            @Override
            public double apply(double x, double y) {
                return Math.pow(x , y);
            }
        },
        REMAINDER("%"){
            @Override
            public double apply(double x, double y) {
                return x % y;
            }
            
        };
         private final String symbol;
         ExtendedOperation(String symbol) {
                this.symbol = symbol;
         }   
    }
    
    public class Test {
        public static void main(String[] args) {
            double x = 2;
            double y = 4;
            test(ExtendedOperation.class, x, y);
        }
        private static <T extends Enum<T> & Operation> void test(Class<T> opSet,
                double x, double y) {
            for (Operation op : opSet.getEnumConstants())
                System.out.printf("%f %s %f= %f%n", x, op, y, op.apply(x, y));
        }
    }
    
    

    相关文章

      网友评论

          本文标题:第 38 条:用接口模拟可扩展的枚举

          本文链接:https://www.haomeiwen.com/subject/urqvdltx.html