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

相关推荐
一个网络学徒2 分钟前
python5
java·服务器·前端
workflower6 分钟前
业务需求-假设场景
java·数据库·测试用例·集成测试·需求分析·模块测试·软件需求
Dimpels13 分钟前
CANN ops-nn 算子解读:AIGC 批量生成中的 Batch 处理与并行算子
开发语言·aigc·batch
blueSatchel22 分钟前
U-Boot载入到DDR过程的代码分析
linux·开发语言·u-boot
专注VB编程开发20年24 分钟前
vb.net datatable新增数据时改用数组缓存
java·linux·windows
(>_<)27 分钟前
java minio 分片上传工具类与测试demo
java·minio·分片上传
不想打工的码农27 分钟前
MyBatis-Plus多数据源实战:被DBA追着改配置后,我肝出这份避坑指南(附动态切换源码)
java·后端
无小道31 分钟前
QT——QFIie和QFileInfo文件类
开发语言·qt·命令模式
Coder_Boy_43 分钟前
Deeplearning4j+ Spring Boot 电商用户复购预测案例
java·人工智能·spring boot·后端·spring
踢足球09291 小时前
寒假打卡:2026-2-7
java·开发语言·javascript