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

        

  • 相关阅读:
    在一台服务器上搭建相对高可用HiveServer实践
    HDU 4462 Scaring the Birds (暴力求解,二进制法)
    HDU 4461 The Power of Xiangqi (水题)
    HDU 4460 Friend Chains (BFS,最长路径)
    UVaLive 7270 Osu! Master (统计)
    CodeForces 705C Thor (模拟+STL)
    CodeForces 705B Spider Man (水题)
    CodeForces 705A Hulk (水题)
    UVa 11971 Polygon (数学,转化)
    UVa 10900 So you want to be a 2n-aire? (概率DP,数学)
  • 原文地址:https://www.cnblogs.com/-scl/p/7655327.html
Copyright © 2011-2022 走看看