使用Optional安全地導航「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鏈中的空值變得更加容易。
使用Optional進行空值處理
Optional 是表示可選值的包裝類別。它可以包含非空值或為空。
要在獲取鏈中使用Optional進行空處理,我們可以透過map()方法利用其連結功能。
考慮以下範例:
Optional.ofNullable(house) .map(house -> house.getFloor(0)) .map(floorZero -> floorZero.getWall(WEST)) .map(wallWest -> wallWest.getDoor()) .map(door -> wallWest.getDoor());
此程式碼建立一系列Optional對象,每個物件代表對應get呼叫的結果。
使用Optional的好處
使用Optional有幾個好處:
結論
如果你無法避免違反德米特定律,強烈建議使用Optional 來安全地導航「get」調用鏈。它提供了一種優雅且高效的方式來處理空值,確保程式碼的健全性和可靠性。
以上是Java 的可選型別如何簡化「Get」呼叫鏈中空值的處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!