美文网首页
当心switch中的空指针异常

当心switch中的空指针异常

作者: 一路花开_8fab | 来源:发表于2018-12-25 15:19 被阅读0次

    先看下面的例子,如果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中使用枚举对象时,注意判空

    相关文章

      网友评论

          本文标题:当心switch中的空指针异常

          本文链接:https://www.haomeiwen.com/subject/ojyflqtx.html