Java基础361问第16问——枚举为什么导致空指针?

我们看一段代码

java 复制代码
public enum Color {
    RED, BLUE, YELLOW;

    public static Color parse(String color) {
        return null;
    }
}

public static void main() {
        Color color = Color.parse("");
        // 极具迷惑性,大家日常开发肯定这么写过
        switch (color) {
            case RED:
                break;
            case BLUE:
                break;
            case YELLOW:
                break;
            default:
                break;
        }
    }

运行一下,发现了 空指针 Color.ordinal()' on a null object reference

为什么呢?

原来Color是一个继承了 Enum的特殊类,里面有一个 ordinal() 方法,当我们使用 switch去传入 color时,编译器内部会调用 Color的ordinal()方法去获取int值,此时出现了 空指针

相关推荐
几度泥的菜花1 分钟前
优雅实现网页弹窗提示功能:JavaScript与CSS完美结合
开发语言·javascript·css
zcyf08091 分钟前
kafka理论学习汇总
java·分布式·学习·kafka
weixin_307779133 分钟前
AWS Glue ETL设计与调度最佳实践
开发语言·数据仓库·云计算·etl·aws
再拼一次吧18 分钟前
Spring进阶篇
java·后端·spring
爱编程的小庄23 分钟前
Maven 4.0.0 模式-pom.xml配置详解
xml·java·maven
黄雪超26 分钟前
JVM——引入
java·jvm
wkj00127 分钟前
java 和 C#操作数据库对比
java·数据库·c#
兜小糖的小秃毛29 分钟前
文号验证-同时对两个输入框验证
开发语言·前端·javascript
WuWuII39 分钟前
gateway
java·gateway
浩宇软件开发1 小时前
Android开发,实现一个简约又好看的登录页
android·java·android studio·android开发