鏈接Getter 並處理NullPointerExceptions
鏈接Getter 並處理NullPointerExceptions執行一系列getter 呼叫以從嵌套對象檢索資料時,有必要執行null 檢查以避免NullPointerExceptions。在處理多個層級的物件時,這很快就會變得冗長和笨拙。
嵌套 If 語句常見的方法是巢狀 if 語句,檢查在繼續之前鍊為 null。然而,這種方法可能會變得笨重且難以維護。
打破德米特定律(LoD)
這種方法違反了德米特定律(LoD) ,它規定方法只能呼叫它們直接引用的物件上的其他方法。透過存取超出其直接上下文的對象,此方法違反了所涉及的類別的封裝。
使用Optional (Java 8)幸運的是,Java 8 引入了Optional 類,它提供了一種更優雅且類型安全的方式來處理getter鏈中的null 值。 Optional 表示可能為 null 的值,並提供映射和過濾其包含的值的方法。
使用Optional.ofNullable 鍊式獲取器Optional doorknob = Optional.ofNullable(house)
.map(house -> house.getFloor(0))
.map(floorZero -> floorZero.getWall(WEST))
.map(wallWest -> wallWest.getDoor())
.map(door -> door.getDoorknob());
要使用Optional 鍊式獲取器,只需調用鏈中第一個物件上的Optional.ofNullable() 。這將建立一個表示值或 null 的可選物件。然後,您可以連結 map() 操作以將 getter 呼叫套用到該值,Optional 將自動處理 null 檢查。 Optional
這種做法不僅簡化了程式碼,也保證了型別安全。如果您嘗試存取它表示的值而不先檢查它是否為空,Optional 類別將引發異常。此外,它維護了所涉及的類別的封裝,因為您只能直接存取您引用的物件上的方法。
結論免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3