编写高质量代码:改善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个以内

    

原文地址:https://www.cnblogs.com/-scl/p/7655327.html