温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Switch开关能判断空吗

发布时间:2026-07-25 23:18:28 来源:亿速云 阅读:101 作者:小樊 栏目:编程语言

可以,但要看你用的是哪种形式的 switch


一、传统 switch(Java 12 之前)✅ 可以判空,但要自己处理

传统 switch 不能直接在 switch (value) 里用 null,否则会 NullPointerException

✅ 正确做法:先判断是否为 null

String value = null;

if (value == null) {
    System.out.println("value 是 null");
} else {
    switch (value) {
        case "A":
            System.out.println("A");
            break;
        case "B":
            System.out.println("B");
            break;
        default:
            System.out.println("其他");
    }
}

错误示例(会直接 NPE)

switch (value) { // value 为 null 会抛异常
    case "A":
        break;
}

二、switch 表达式(Java 14+)✅ 同样不能直接判 null

String result = switch (value) { // value 为 null 会 NPE
    case "A" -> "A";
    case "B" -> "B";
    default -> "其他";
};

仍需提前判空

String result = value == null ? "null" :
        switch (value) {
            case "A" -> "A";
            case "B" -> "B";
            default -> "其他";
        };

三、能不能在 case 中写 null?❌ 不可以

switch (value) {
    case null:  // ❌ 编译错误
        break;
}

四、如果一定要“支持 null”,推荐写法 ✅

✅ 写法一:提前 if 判断(最常用)

if (value == null) {
    // 处理 null
} else {
    switch (value) {
        case "A" -> {}
        case "B" -> {}
    }
}

✅ 写法二:用 Objects 兜底

String key = Objects.toString(value, "DEFAULT");

switch (key) {
    case "DEFAULT" -> System.out.println("null 的情况");
    case "A" -> System.out.println("A");
}

五、总结一句话 ✅

Java 的 switch 本身不能处理 nullnull 会抛 NullPointerException,必须在进入 switch` 前单独判断。

如果你愿意,我可以帮你写一个 兼容 null 的通用 switch 工具方法

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI