在 Java 里说到 Switch 优化,通常可以从 性能、可读性、可维护性、设计层面 几个角度来优化。下面按常见场景给你总结一下。
Java 14 之后正式支持,代码更简洁、避免 break 漏写。
int type = 1;
String result;
switch (type) {
case 1:
result = "A";
break;
case 2:
result = "B";
break;
default:
result = "C";
}
int type = 1;
String result = switch (type) {
case 1 -> "A";
case 2 -> "B";
default -> "C";
};
✅ 优点:
break当 switch 里逻辑很多时,说明设计可能有问题。
switch (type) {
case 1:
doA();
break;
case 2:
doB();
break;
case 3:
doC();
break;
}
interface Handler {
void handle();
}
Map<Integer, Handler> map = new HashMap<>();
map.put(1, () -> System.out.println("A"));
map.put(2, () -> System.out.println("B"));
map.put(3, () -> System.out.println("C"));
Handler handler = map.get(type);
if (handler != null) {
handler.handle();
}
✅ 优点:
JVM 对 switch 的优化顺序:
int / char / short / byte
↓
enum
↓
String(最慢)
switch (str) {
case "A": break;
case "B": break;
}
enum Type {
A, B
}
switch (type) {
case A: break;
case B: break;
}
✅ 原因:
String 需要 hashCode + equalsenum 会被编译成高效表switch (code) {
case 200:
case 201:
case 202:
success();
break;
default:
fail();
}
或者:
if (code >= 200 && code < 300) {
success();
} else {
fail();
}
✅ 适合保留 switch 的情况
❌ 不适合
| 场景 | 优化方式 |
|---|---|
| Java 14+ | Switch 表达式 |
| 分支多 | 策略模式 / Map |
| 用 String | 改成 enum |
| 逻辑复杂 | 拆方法 |
| 性能敏感 | 用 int / enum |
如果你愿意,可以把你具体的 switch 代码贴出来,我可以直接帮你重构 + 优化一版。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。