在 Java 中使用 switch 语句(或 switch 表达式)时,有一些最佳实践可以帮助你写出更清晰、安全、可维护的代码。下面按版本演进 + 实际建议来说明。
switch 表达式(Java 14+)从 Java 14 开始,switch 表达式正式可用,推荐替代传统 switch 语句。
String type = switch (status) {
case "A" -> "Active";
case "B" -> "Blocked";
case "C" -> "Closed";
default -> "Unknown";
};
String type;
switch (status) {
case "A": type = "Active"; break;
case "B": type = "Blocked"; break;
default: type = "Unknown";
}
优点:
break 漏写风险default(除非枚举全覆盖)default -> throw new IllegalArgumentException("Unknown type: " + type);
enum Status { A, B, C }
String desc = switch (status) {
case A -> "Active";
case B -> "Blocked";
case C -> "Closed";
};
✅ 枚举可省略 default,因为编译器能保证完整性
⚠️ 一旦新增枚举值,编译器会强制你处理
switch (x) {
case 1:
case 2:
doSomething();
case 3:
doOther();
}
switch (x) {
case 1, 2 -> doSomething();
case 3 -> doOther();
}
switch (type) {
case "A":
// 50 行业务代码
break;
}
switch (type) {
case "A" -> handleA();
case "B" -> handleB();
}
或:
Map<String, Runnable> handlers = Map.of(
"A", this::handleA,
"B", this::handleB
);
switch (x) {
case 1 -> x = 2; // ❌ 不推荐
}
✅ switch 应是只读分支判断
switch:
if-else:
if (score > 90) { ... }
else if (score > 60) { ... }
switch (level) { ... }
enum Role {
ADMIN, USER, GUEST;
String permission() {
return switch (this) {
case ADMIN -> "ALL";
case USER -> "READ";
case GUEST -> "NONE";
};
}
}
✅ Java switch 最佳实践:
switch 表达式(非语句)defaultbreak、不靠 fall-through如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。