代码对比
✕ Java 8
// Must check before switch
if (status == null) {
return "unknown";
}
return switch (status) {
case ACTIVE -> "active";
case PAUSED -> "paused";
default -> "other";
};
✓ Java 21+
return switch (status) {
case null -> "unknown";
case ACTIVE -> "active";
case PAUSED -> "paused";
default -> "other";
};
发现此代码有问题? 告诉我们。
为什么现代方式更好
显式
null 处理直接在 switch 中可见。
更少代码
无需在 switch 之前单独进行 null 检查。
防止 NPE
将 null 作为 case 处理,防止 NullPointerException。
旧方式
switch 前的守卫
现代方式
case null
自 JDK
21
难度
入门
JDK 支持
switch 中的 null case
可用
自 JDK 21 LTS 起广泛可用(2023 年 9 月)
工作原理
模式匹配 switch 可以将 null 作为 case 标签匹配。这消除了在进入 switch 之前的单独 null 检查,使 null 处理在 switch 中清晰可见。
相关文档