java 17 - 增强 switch表达式
java 17版本中switch表达式将允许switch有返回值,并且可以直接作为结果赋值给一个变量,等一系列的变化。
书写简化及支持返回值
java 17之前,我们场景的switch语句会这样写,在每个case后面加break来做到语句中断,并且不同case匹配同一个代码块时需要换行处理。
private static void printFruitSeason(Fruit fruit) {
switch (fruit) {
case APPLE:
System.out.println("秋季成熟");break;
case BANANA:
case ORANGE:
System.out.println("夏季成熟");break;
case LEMON:
System.out.println("冬季成熟");break;
default: System.out.println("未知水果");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
java 17之后可以这样写了
private static void printFruitSeason(Fruit fruit) {
switch (fruit) {
case APPLE -> System.out.println("秋季成熟");
case BANANA, ORANGE -> System.out.println("夏季成熟");
case LEMON -> System.out.println("冬季成熟");
default -> System.out.println("未知水果");
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
甚至可以有返回值
private static String getFruitSeason(Fruit fruit) {
String season = switch (fruit) {
case APPLE -> "秋季成熟";
case BANANA, ORANGE -> "夏季成熟";
case LEMON -> "冬季成熟";
};
return season;
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
如果想在返回前做一些处理可以用yield关键字对结果做返回
private static String getFruitSeason(Fruit fruit) {
String season = switch (fruit) {
case APPLE -> {
String str = "秋季成熟";
// do something...
System.out.println(str);
yield str;
}
case BANANA, ORANGE -> "夏季成熟";
case LEMON -> "冬季成熟";
};
return season;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
也可以写成这样
private static String getFruitSeason(Fruit fruit) {
String season = switch (fruit) {
case APPLE: {
String str = "秋季成熟";
// do something...
System.out.println(str);
yield str;
}
case BANANA, ORANGE: yield "夏季成熟";
case LEMON: yield "冬季成熟";
};
return season;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
上次更新: 2024/01/11 17:06:16