Java8 Optional 幾個常見錯誤用法

Java 8 引入的 Optional 類型,基本是把它當作 null 值優雅的處理方式。其實也不完全如此,Optional 在語義上更能體現有還是沒有值。所以它不是設計來作爲 null 的替代品,如果方法返回 null 值表達了二義性,沒有結果或是執行中出現異常。

在 Oracle  做  Java 語言工作的  Brian Goetz 在 Stack Overflow 回覆  Should Java 8 getters return optional type? 中講述了引入  Optional 的主要動機。

Our intention was to provide a limited mechanism for library method return types where there needed to be a clear way to represent “no result”, and using null for such was overwhelmingly likely to cause errors.

說的是  Optional 提供了一個有限的機制讓類庫方法返回值清晰的表達有與沒有值,避免很多時候 null 造成的錯誤。並非有了  Optional 就要完全杜絕 NullPointerException。

在 Java 8 之前一個實踐是方法返回集合或數組時,應返回空集合或數組表示沒有元素; 而對於返回對象,只能用 null 來表示不存在,現在可以用  Optional 來表示這個意義。

自 Java8 於  2014-03-18 發佈後已 5 年有餘,這裏就列舉幾個我們在項目實踐中使用 Optional 常見的幾個用法。

Optional 類型作爲字段或方法參數

這兒把 Optional  類型用爲字段(類或實例變量)和方法參數放在一起來講,是因爲假如我們使用 IntelliJ IDEA 來寫 Java 8 代碼,IDEA 對於  Optional 作爲字段和方法參數會給出同樣的代碼建議: 閱讀全文 >>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章