zoukankan      html  css  js  c++  java
  • 编写高质量代码:改善Java的151个建议七(枚举和注解)83-92

    该书籍PDF下载地址:http://download.csdn.net/download/muyeju/10001473

    83.推荐使用枚举定义常量

      枚举类名.values()方法:获得所有枚举项

      ordinal():返回枚举常量的序数

      valueOf():根据指定名称返回枚举变量

      每个枚举项都是枚举的一个实例

      在项目中推荐使用枚举常量代替接口常量和类常量

    84.通过构造方法协助描述枚举项

      例:  

    package jsontest;
    
    public enum NumEnum {
        
        SUCCESS("成功"),
        FAIL("失败") ;
        
        private String des ;
    
        NumEnum(String des){
            this.des = des ;
        }
        
        public String getDes() {
            return des;
        }
    
        public void setDes(String des) {
            this.des = des;
        }
        
    }

    85.小心switch带来的空值异常

      当switch语句后面的参数是枚举类型,编译器会根据枚举的排序值进行匹配,所以当传过来的是null值,会报错

      所以,switch后面的参数是枚举类型,应该进行空值判断

    public static void test(NumEnum e){
            if(e!=null){
                switch(e){
                    case SUCCESS:
                        System.out.println("----成功");
                        break ;
                    case FAIL :
                        System.out.println("------失败");
                        break ;
                }
            }
        }

    86.枚举类型的switch,建议在default中增加AssertionError错误

      因为枚举的所有项都在case中列出来了,所以default没什么用,但是当增加了一个枚举,而没有修改switch中的case,就可能导致某些东西没执行,所以建议在default中抛出一个AssertionError

    87.使用枚举的valueOf前必须进行校验该枚举是否存在

      如果使用枚举的valueOf,有该枚举就返回该枚举,没有该枚举就会抛异常,所以最好在调用valueOf方法前,先判断一下有没有该枚举值

    public static boolean contains(String name){
            NumEnum[] n = NumEnum.values() ;
            for (NumEnum numEnum : n) {
                if(numEnum.name().equals(name)){
                    return true ;
                }
            }
            return false ;
        }

    88.用枚举实现工厂模式更简洁

     

    89.枚举项的数量限制在64个以内

        

  • 相关阅读:
    MySQL百万级数据量分页查询方法及其优化
    Windows10内置Linux子系统初体验
    谈谈区块链(18):以太坊的UTXO
    永久告别mac屏幕涂层脱落
    Cloud Foundry中DEA启动应用实例时环境变量的使用
    jQuery 事件方法大全-超全的总结
    UVA12304-2D Geometry 110 in 1!
    Hbase总结(五)-hbase常识及habse适合什么场景
    Android笔记之 网络http通信
    Mac下安装Redis
  • 原文地址:https://www.cnblogs.com/-scl/p/7655327.html
Copyright © 2011-2022 走看看