使用可選的「Get」呼叫鏈安全導航
在Java 程式設計中,經常會遇到「get」呼叫鏈,例如以下:
house.getFloor(0).getWall(WEST).getDoor().getDoorknob();
為了避免潛在的NullPointerExceptions,開發人員通常採用詳細的null 檢查:
if (house != null &&& house.getFloor(0) &&& house.getFloor(0).getWall(WEST) != null &&& house.getFloor(0).getWall(WEST).getDoor() != null) ...
這種方法變得更笨拙更長的呼叫鏈。有沒有更優雅的解決方案?
是的,隨著Java 8引入了Optional類型,處理gets鏈中的null值變得更加容易。
使用Optional進行Null處理
Optional 是表示可選值的包裝類別。它可以包含非空值或為空。
要在獲取鏈中使用Optional進行空處理,我們可以透過map()方法利用其連結功能。
考慮下面的例子:
Optional.ofNullable(house) .map(house -> house.getFloor(0)) .map(floorZero -> floorZero.getWall(WEST)) .map(wallWest -> wallWest.getDoor()) .map(door -> wallWest.getDoor());
此程式碼建立一系列可選對象,每個物件代表對應 get 呼叫的結果。
使用的好處可選
使用可選提供了幾個好處:
結論
. ]如果您無法避免違反Demeter 定律,強烈建議使用Optional 來安全地導航獲取鏈「得到」電話。它提供了一種優雅而有效的方式來處理空值,確保程式碼的健全性和可靠性。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3