在 Java 12 及以后版本,switch 语句和表达式有了不少新特性,主要目标是更简洁、更安全、更函数式。下面按版本和特性来总结:
传统 switch 是语句,新特性允许作为表达式返回值。
旧写法(语句)
int day = 2;
String type;
switch (day) {
case 1:
case 2:
case 3:
type = "工作日";
break;
default:
type = "休息日";
}
新写法(表达式)
String type = switch (day) {
case 1, 2, 3 -> "工作日";
default -> "休息日";
};
✅ 特点:
->breakswitch (x) {
case 1 -> System.out.println("一");
case 2 -> System.out.println("二");
default -> System.out.println("其他");
}
✅ 不会“贯穿”(fall-through)
在复杂逻辑中返回结果:
int result = switch (x) {
case 1:
yield 10;
case 2:
yield 20;
default:
yield 0;
};
✅ yield 用于表达式式 switch
可以匹配类型:
Object obj = "hello";
String result = switch (obj) {
case Integer i -> "整数: " + i;
case String s -> "字符串: " + s;
default -> "未知";
};
✅ 属于 Pattern Matching for switch(仍在演进)
switch (obj) {
case Integer i when i > 0 -> ...
case String s -> ...
case null -> "null值";
default -> ...
}
✅ 新增:
when 守卫条件null| 特性 | 版本 | 说明 |
|---|---|---|
| switch 表达式 | Java 14 | 可作为表达式 |
| 箭头语法 | Java 12 | -> 简化 |
| yield | Java 13 | 返回值 |
| 类型匹配 | Java 17+ | case Type t |
| when 守卫 | Java 21 | 条件判断 |
| null 支持 | Java 21 | case null |
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。