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

相关推荐
速易达网络10 分钟前
基于Java Servlet的用户登录系统设计与实现
java·前端·mvc
拾贰_C13 分钟前
【python | pytorch | 】.报错怎么找到问题所在?
开发语言·pytorch·python
散一世繁华,颠半世琉璃15 分钟前
从 0 到 1 优化 Java 系统:方法论 + 工具 + 案例全解析
java·性能优化·操作系统
JasmineWr15 分钟前
Java SPI和OSGi
java·开发语言
Lisonseekpan17 分钟前
@Autowired 与 @Resource区别解析
java·开发语言·后端
你的冰西瓜18 分钟前
C++中的vector容器详解
开发语言·c++·stl
刻BITTER19 分钟前
C++ 获取任意整数类型的最大、最小值和长度
开发语言·c++
Gu_yyqx22 分钟前
Maven管理工具
java·maven
悦悦子a啊27 分钟前
Maven 项目实战入门之--学生管理系统
java·数据库·oracle
晨光321127 分钟前
Day34 模块与包的导入
java·前端·python