首頁> Java> java教程> 主體

探索 Java 21 中 Switch 模式匹配的強大功能

WBOY
發布: 2024-08-15 06:43:32
原創
857 人瀏覽過

Exploring the Power of Pattern Matching with Switch in Java 21

使用 switch 進行模式匹配的一個流行用例是在程式中處理不同類型的資料時。考慮以下 WeatherStation 類別範例,該類別具有不同類型的感測器並返回當前溫度:

`公開課氣象站{

雷雷

}
`
在這裡,我們可以看到 Sensor 介面用於選擇器表達式,並且 case 標籤使用基於特定 Sensor 實作的模式:TemperatureSensor 和 HumiditySensor。這允許在 switch 語句中以更簡潔和可讀的方式處理不同類型的資料。

使用 switch 進行模式匹配的另一個用例是處理枚舉時。在引入模式匹配之前,枚舉只能用作 case 標籤中的常數,從而限制了可以在 switch 語句中測試的值。借助新功能,現在可以在 case 標籤中限定枚舉,從而實現更精確和靈活的匹配。

公共枚舉方向 {
北,
東,
南,
西
}

public void move(方向方向) {
切換(方向){
案例北,北西,北東 ->向上移動();
情況 EAST、EAST_NORTH、EAST_SOUTH ->向右移動();
案例南,南_東,南_西->向下移動();
案例西、西_北、西_南 ->向左移動();
}
}

這裡,move() 方法使用 switch 語句來根據指定的 Direction 枚舉值輕鬆處理不同方向的移動。透過模式匹配,我們還可以指定方向組合,例如 NORTH_WEST 和 EAST_SOUTH,使我們的程式碼更加健壯和靈活。

最後,讓我們來看一個範例,了解模式匹配如何幫助 switch 語句中的錯誤處理。在傳統的 switch 中,如果選擇器表達式與任何 case 標籤都不匹配,則可以使用預設 case 來處理錯誤。但是,在處理多個 case 標籤時,這可能會很乏味,並且可能導致程式碼重複。在模式匹配中,如果沒有任何 case 標籤模式與選擇器表達式匹配,則會引發異常,從而使錯誤處理更加統一且不易出錯。

public String getPlanetaryObject(PlanetaryBody body) {
返回開關(主體){
case Planet p && p.getMass() > 1e29-> p.getName() + "是一個氣態巨行星";
case Planet p && p.getMass() > 1e23-> p.getName() + "是一顆岩石行星";
case Star s && s.getLuminosity() > 1e32-> s.getName() + "是一顆明亮的星星";
case Star s && s.getLuminosity() s.getName() + "是一顆暗淡的星星";
預設-> throw new MatchException(“無法確定行星物體的類型:” + body.getName());
};
}

在此範例中, getPlanetaryObject() 方法接受一個 PlanetaryBody 對象,該物件可以是行星或恆星。錶殼標籤中使用的圖案考慮了其他條件,例如行星的質量或恆星的光度。如果沒有任何模式匹配,則會引發 MatchException,從而使錯誤處理更加一致並防止任何潛在錯誤。

結論
switch 的模式匹配是近年來 Java 中引入的最重要的功能之一。它允許更靈活和簡潔的控制流結構。

透過獲得 Java SE 21 專業認證開發人員認證來升級您的 Java 技能。

以上是探索 Java 21 中 Switch 模式匹配的強大功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!