jdk12的预览版switch语句可以使用“->”符号代替“:”,免去书写break,支持有返回值;
jdk13的预览版switch语句新增了yield关键字用于返回值;
jdk14将之前的switch新特性转为正式版;
jdk12之前的switch:
@Test
void test() {
String s = "a";
switch (s) {
case "a":
System.out.println(123);
break;
case "b":
System.out.println(456);
break;
default:
System.out.println(789);
}
}
jdk12可以使用->和返回值,可以免去break:
@Test
void test() {
String s = "b";
switch (s) {
case "a" -> System.out.println(123);
case "b", "c" -> System.out.println(456);
default -> System.out.println(789);
}
}
@Test
void test() {
String s = "b";
int x = switch (s) {
case "a" -> 1;
case "b", "c" -> 2;
default -> 3;
};
System.out.println(x);
}
jdk13可以使用新增的yield关键字明确指定返回值:
@Test
void test() {
String s = "b";
int x = switch (s) {
case "a" -> {
System.out.println(111);
yield 1;
}
case "b", "c" -> {
System.out.println(222);
yield 2;
}
default -> {
System.out.println(333);
yield 3;
}
};
System.out.println(x);
}
另外,在一个switch中“:”和“->”不能混用,要么全用“:”,要么全用“->”;