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改進後語法更簡潔 直觀


分享到:


相關文章: