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

相关推荐
久绊A3 分钟前
Hydra-SSH 破解安全防范
开发语言·php
阿昭L11 分钟前
c++中获取随机数
开发语言·c++
2501_9159184113 分钟前
iOS 开发全流程实战 基于 uni-app 的 iOS 应用开发、打包、测试与上架流程详解
android·ios·小程序·https·uni-app·iphone·webview
3壹17 分钟前
数据结构精讲:栈与队列实战指南
c语言·开发语言·数据结构·c++·算法
lichong95120 分钟前
【混合开发】vue+Android、iPhone、鸿蒙、win、macOS、Linux之dist打包发布在Android工程asserts里
android·vue.js·iphone
Android出海24 分钟前
Android 15重磅升级:16KB内存页机制详解与适配指南
android·人工智能·新媒体运营·产品运营·内容运营
悟乙己25 分钟前
使用 Python 中的强化学习最大化简单 RAG 性能
开发语言·python·agent·rag·n8n
bug攻城狮27 分钟前
Spring Boot Banner
java·spring boot·后端
一只修仙的猿28 分钟前
毕业三年后,我离职了
android·面试
max50060030 分钟前
图像处理:实现多图点重叠效果
开发语言·图像处理·人工智能·python·深度学习·音视频