JAVA12中的Switch改进后语法更简洁 直观

JAVA12中的Switch改进后语法更简洁 直观

美国当地时间 3 月 19 日, Java 12 正式发布了!Java 12 带来了一系列新特性,其中一个是对Switch的改进

Switch 表达式(预览功能)

扩展了 switch 语句,使其不仅可以作为语句(statement),还可以作为表达式(expression),并且两种写法都可以使用传统的 switch 语法,或者使用简化的“case L ->”模式匹配语法作用于不同范围并控制执行流。这些更改将简化日常编码工作,并为 switch 中的模式匹配(JEP 305)做好准备。

JAVA12中的Switch改进后语法更简洁 直观

旧写法1

switch (day) {
case MONDAY:
case FRIDAY:
case SUNDAY:
System.out.println(6);
break;
case TUESDAY:
System.out.println(7);
break;
case THURSDAY:
case SATURDAY:
System.out.println(8);
break;
case WEDNESDAY:
System.out.println(9);
break;
}

在以前的case 表达式写法中,每个CASE必须要用break跳出,否则就呵呵了,逻辑都错了,所以每次都要重复写N个break,漏掉一个可不得了,天都会塌下来的。

新写法1

switch (day) {
case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
case TUESDAY -> System.out.println(7);
case THURSDAY, SATURDAY -> System.out.println(8);
case WEDNESDAY -> System.out.println(9);
}

漂亮吧!

旧写法2

变量赋值

int numLetters;
switch (day) {

case MONDAY:
case FRIDAY:
case SUNDAY:
numLetters = 6;
break;
case TUESDAY:
numLetters = 7;
break;
case THURSDAY:
case SATURDAY:
numLetters = 8;
break;
case WEDNESDAY:
numLetters = 9;
break;
default:
throw new IllegalStateException("Wat: " + day);
}

新写法2

变量赋值新写法

int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};

简洁吧!

新写法3

变量赋值,同时还有方法处理过程

int j = switch (day) {

case MONDAY -> 0;

case TUESDAY -> 1;

default -> {

int k = day.toString().length();

int result = f(k);

break result;

}

};

break 作了扩展可以支持参数,这个参数将作为表达式的值

强大吧!

JAVA12中的Switch改进后语法更简洁 直观

总结

->是Java8里新加入的特性lambda表达式,相当于无名称的函数,这个和Python中的lambda是差不多的意思。

通过这个lambda对switch 进行改进后,代码量更少了,也更加易读。

同时->还可以让我们自己的代码变得简洁易读。

JAVA12中的Switch改进后语法更简洁 直观


分享到:


相關文章: