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 上獲取。