Java中的yield關鍵字指南
1. 概述
我們可能經常使用switch語句將一個值轉換為另一個值。在早期版本的 Java 中,這要求我們將switch嵌入到單獨的函數中並使用每個case的return語句,或者要求我們為每個case分配一個臨時變量以供稍後在函數中使用。
從Java 14開始, switch表達式中的yield關鍵字為我們提供了更好的方法。
yield關鍵字
yield關鍵字允許我們通過返回一個成為switch switch 。
這意味著我們可以將switch表達式的值分配給變量。
最後,通過在switch表達式中使用yield ,我們可以隱式檢查是否覆蓋了我們的情況,這使得我們的代碼更加健壯。
讓我們看一些例子。
2.1.使用箭頭運算符yield
首先,假設我們有以下enum和switch語句:
public enum Number {
ONE, TWO, THREE, FOUR;
}
String message;
switch (number) {
case ONE:
message = "Got a 1";
break;
case TWO:
message = "Got a 2";
break;
default:
message = "More than 2";
}
讓我們將其轉換為switch表達式,並使用yield關鍵字和箭頭運算符:
String message = switch (number) {
case ONE -> {
yield "Got a 1";
}
case TWO -> {
yield "Got a 2";
}
default -> {
yield "More than 2";
}
};
yield根據number的值設置switch表達式的值。
2.2.帶有冒號分隔符的yield
我們還可以使用yield和冒號分隔符創建一個switch表達式:
String message = switch (number) {
case ONE:
yield "Got a 1";
case TWO:
yield "Got a 2";
default:
yield "More than 2";
};
此代碼的行為與上一節中的相同。但箭頭運算符更清晰,也不太容易忘記yield (或break )語句。
我們應該注意,我們不能在同一個switch表達式中混合冒號和箭頭分隔符。
3. 詳盡性
使用switch表達式和yield的另一個好功能是,如果我們缺少案例覆蓋率,我們將看到編譯錯誤。讓我們從箭頭運算符switch表達式中刪除default情況以進行檢查:
String message = switch (number) {
case ONE -> {
yield "Got a 1";
}
case TWO -> {
yield "Got a 2";
}
};
上面的代碼給了我們一個number錯誤:“ the switch expression does not cover all possible input values ”。
我們可以重新添加default情況,或者我們可以專門覆蓋number的其餘可能值:
String message = switch (number) {
case ONE -> {
yield "Got a 1";
}
case TWO -> {
yield "Got a 2";
}
case THREE, FOUR -> {
yield "More than 2";
}
};
switch表達式迫使我們的案例覆蓋面非常詳盡。
4。結論
在本文中,我們探討了 Java 中的yield關鍵字、它的用法以及它的一些好處。
與往常一樣,我們示例的完整源代碼可以 在 GitHub 上獲取。