您的位置:首页 > 编程语言 > Java开发

编写高质量代码:改善Java的151个建议七(枚举和注解)83-92

2017-10-12 11:31 459 查看
该书籍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个以内

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: