![JAVA12中的Switch改進後語法更簡潔 直觀](http://p2.ttnews.xyz/loading.gif)
美國當地時間 3 月 19 日, Java 12 正式發佈了!Java 12 帶來了一系列新特性,其中一個是對Switch的改進
Switch 表達式(預覽功能)
擴展了 switch 語句,使其不僅可以作為語句(statement),還可以作為表達式(expression),並且兩種寫法都可以使用傳統的 switch 語法,或者使用簡化的“case L ->”模式匹配語法作用於不同範圍並控制執行流。這些更改將簡化日常編碼工作,併為 switch 中的模式匹配(JEP 305)做好準備。
![JAVA12中的Switch改進後語法更簡潔 直觀](http://p2.ttnews.xyz/loading.gif)
舊寫法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 作了擴展可以支持參數,這個參數將作為表達式的值
強大吧!
總結
->是Java8裡新加入的特性lambda表達式,相當於無名稱的函數,這個和Python中的lambda是差不多的意思。
通過這個lambda對switch 進行改進後,代碼量更少了,也更加易讀。
同時->還可以讓我們自己的代碼變得簡潔易讀。
閱讀更多 牧碼人1981 的文章