可以,但要看你用的是哪种形式的 switch。
switch(Java 12 之前)✅ 可以判空,但要自己处理传统 switch 不能直接在 switch (value) 里用 null,否则会 抛 NullPointerException。
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;
}
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;
}
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本身不能处理null,null会抛NullPointerException,必须在进入switch` 前单独判断。
如果你愿意,我可以帮你写一个 兼容 null 的通用 switch 工具方法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。