• 枚举


    枚举类型其实归根结底也是普通的java类,因此在使用的时候也可以参考java类的一些处理方式,提高的代码的可复用性

    如 下面关于数值操作的枚举类

                 

    public enum Operate {
    
        PLUS, MINUS, TIMES, DIVIDE;
    
        public double apply(double x, double y) {
            switch (this) {
            case PLUS:
                return x + y;
            case MINUS:
                return x - y;
            case TIMES:
                return x * y;
            case DIVIDE:
                return x / y;
            }
            throw new AssertionError("Unknown op:" + this);
        }
    
    }

          这段代码虽然简单易懂,但是不好看。如果没有throw 字句,这个方法还会有编译错误,如果增加了新的枚举类型,确忘了增加case字句,那么就会抛出错误,运行就会失败。

    如何解决?

          将不同的行为与每个枚举常量关联起来:在枚举类型中声明一个抽象的apply方法,并在特定于常量的类主体中,用具体的方法覆盖每个常量的抽象apply方法。如下所示:

       

    public enum Operate {
    
    	PLUS {
    		@Override
    		public double apply(double x, double y) {
    			return x + y;
    		};
    	},
    	MINUS {
    		@Override
    		public double apply(double x, double y) {
    			// TODO Auto-generated method stub
    			return x - y;
    		};
    	},
    	TIMES {
    		@Override
    		public double apply(double x, double y) {
    			return x * y;
    		};
    	},
    	DIVIDE
    	{
    		@Override
    		public double apply(double x, double y) {
    			return x / y;
    		};
    	};
    	public abstract double apply(double x, double y);
    
    }
    

      如果在增加新的枚举类型,你就不会忘记提供apply方法了,增加了复用性和安全性

    此外,根据实际的需要,可以使用策略枚举(跟策略模式一样)

  • 相关阅读:
    jmeter压测-05-xpath表达式
    测试那些事-测试资源篇
    测试那些事-沟通篇
    测试那些事-前端
    测试那些事儿-后端
    记一次大数据量不同处理方式下服务器负载
    jmeter压测dubbo接口,参数为dto时如何写传参及有错误时的分析思路
    pyton3 字典排序
    python测试dubbo接口
    记录一下telnet测试dubbo接口,参数为dto时怎么测试,枚举类型传参
  • 原文地址:https://www.cnblogs.com/chenfei0801/p/3665213.html
Copyright © 2020-2023  润新知