当心switch中的空指针异常

先看下面的例子,如果switch后的枚举对象为空,会出现什么情况呢?

public enum SeasonEnum {
    SPRING,
    SUMMER,
    AUTUM,
    WINTER
}
public class Test {

    public static void main(String[] args) {
        SeasonEnum seasonEnum = null;

        switch (seasonEnum) {
            case SPRING:
                System.out.println("春天到啦!");
                break;
            case SUMMER:
                System.out.println("夏天到啦!");
                break;
            case AUTUM:
                System.out.println("秋天到啦!");
                break;
            case WINTER:
                System.out.println("冬天到啦!");
                break;
                default:
                System.out.println("我也不知道现在是什么季节!");
        }
    }

}

image.png

目前的Java的switch语句只能判断byte、short、char、int类型(JDK7已经允许使用string类型),为什么枚举也能跟在switch后面呢?很简单,因为编译的时候,编译器判断出switch后面的参数是枚举类型,然后就会根据枚举的排序值继续匹配。当枚举对象为空时,拿不到排序值,因此会出现空指针异常。
因此,在switch中使用枚举对象时,注意判空

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容