Java 13 都快要來了,12必須跟棧長學起!
Java 12 中對 switch 的語法更友好了,建議大家看下棧長在Java技術棧微信公眾號分享的《switch case 支持的 6 種數據類型!》,對理解 switch 更有幫助。
那么在 Java 12 中可以怎樣玩 switch?
先來定義一個枚舉類:
public enum Status {
OPEN, INIT, PROCESS, PENDING, CLOSE;
}
Java 12 之前是這樣用的:
private static void testSwitch1(Status status) {
int result = 0;
switch (status) {
case OPEN:
result = 1;
break;
case PROCESS:
result = 2;
break;
case PENDING:
result = 2;
break;
case CLOSE:
result = 3;
break;
default:
throw new RuntimeException("狀態不正確");
}
System.out.println("result is " + result);
}
Java 12 后可以這樣用:
private static void testSwitch2(Status status) {
var result = switch (status) {
case OPEN -> 1;
case PROCESS, PENDING -> 2;
case CLOSE -> 3;
default -> throw new RuntimeException("狀態不正確");
};
System.out.println("result is " + result);
}
示例代碼看了都懂吧,是不是很騷?
Java 12 switch 有以下幾點特色:
- 箭頭語法 ->,類似 Java 8 中的 Lambda 表達式;
- 可以直接返回值給一個變量,並且可以不用 break 關鍵字;
- case 條件,多個可以寫在一行,用逗號分開;
- 可以省略 break 關鍵字;
當然你也可以使用 break 關鍵字,后面跟值:
private static void testSwitch3(Status status) {
var result = switch (status) {
case OPEN -> {
break 1;
}
case PROCESS, PENDING -> {
break 2;
}
case CLOSE -> {
break 3;
}
default -> {
break 5;
}
};
System.out.println("result is " + result);
}
不推薦用這種,在編譯器也會顯示灰色,並提示你更改。
最后,這個新特性是 Java 12 預覽版中的特性:JEP 325: Switch Expressions (Preview)
,要使用這個新特性,請切換至 Java 12 預覽版。
好了,今天的分享就到這,收藏轉發一下吧,多學習了解,日后必定有用!
歷史 Java 新特性干貨分享:
獲取上面這份 Java 8~12 系列新特性干貨文章,請在微信搜索關注微信公眾號:Java技術棧,在公眾號后台回復:java。
本文原創首發於微信公眾號:Java技術棧(id:javastack),轉載請原樣保留本信息。