1700446050
编写高质量代码:改善Java程序的151个建议 建议85:小心switch带来的空值异常
1700446051
1700446052
使用枚举定义常量时,会伴有大量的switch语句判断,目的是为每个枚举项解释其行为,例如这样一个方法:
1700446053
1700446054
public static void doSports(Season season){
1700446055
1700446056
switch(season){
1700446057
1700446058
case Spring:
1700446059
1700446060
System.out.println(“春天放风筝”);
1700446061
1700446062
break;
1700446063
1700446064
case Summer:
1700446065
1700446066
System.out.println(“夏天游泳”);
1700446067
1700446068
break;
1700446069
1700446070
case Autumn:
1700446071
1700446072
System.out.println(“秋天捉知了”);
1700446073
1700446074
break;
1700446075
1700446076
case Winter:
1700446077
1700446078
System.out.println(“冬天滑冰”);
1700446079
1700446080
break;
1700446081
1700446082
default:
1700446083
1700446084
System.out.println(“输入错误!”);
1700446085
1700446086
break;
1700446087
1700446088
}
1700446089
1700446090
}
1700446091
1700446092
上面的代码中输入了一个Season类型的枚举,然后使用switch进行匹配,目的是输出每个季节能进行的活动。现在的问题是:这段代码有没有问题?
1700446093
1700446094
我们先来看它是如何被调用的,因为要传递进来的是Season类型,也就是一个实例对象,那当然应该允许为空了,我们就传递一个null值进去看看有没有问题,代码如下:
1700446095
1700446096
public static void main(String[]args){
1700446097
1700446098
doSports(null);
[
上一页 ]
[ :1.700446049e+09 ]
[
下一页 ]