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个以内

        

  • 相关阅读:
    "gcc: cannot specify -o when generating multiple output files"解决方案
    VSCode 回退到上一层
    Mac下的clion配置c/c++环境
    安装homebrew报错error: Not a valid ref: refs/remotes/origin/master 的解决方法
    正则多个空格替换成一个空格 多个相同的字符值保留一个
    python for 循环的速度
    下载器
    requests content 和text 编码格式
    博客园积分排名
    python QQ 发送邮件功能
  • 原文地址:https://www.cnblogs.com/-scl/p/7655327.html
Copyright © 2011-2022 走看看