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值,此时出现了 空指针

相关推荐
编程乐学(Arfan开发工程师)4 分钟前
10、底层注解-@Conditional条件装配
java·spring boot·后端·架构
五花肉村长4 分钟前
Linux-进程信号
linux·运维·服务器·开发语言·网络·c++
爬菜14 分钟前
包装类(1)
java
带刺的坐椅15 分钟前
高德地图 MCP,可用 Java SolonMCP 接入(支持 java8, java11, java17, java21)
java·ai·solon·高德地图·lbs·mcp
AA-代码批发V哥30 分钟前
Java-List集合类全面解析
java·开发语言·list
cainiao08060530 分钟前
Java大数据机器学习模型在金融衍生品风险建模中的创新实践
java·金融
羚羊角uou35 分钟前
【C++】map和multimap的常用接口详解
开发语言·c++
Q_Q196328847541 分钟前
python动漫论坛管理系统
开发语言·spring boot·python·django·flask·node.js·php
举一个梨子zz43 分钟前
Java—— IO流 第一期
java·开发语言
鸠。44 分钟前
第二章 苍穹外卖
java