java8 optional筆記

一、原因:

為避免nullPointException錯誤,一般都是進行顯示的!=null判斷,對于一些代碼嵌套比較深的代碼,會多出很多if-else,而且代碼的拓展性和可讀性較差。

二、使用方法

  • 1、Optional類是對原有類的一次封裝
    變量存在時,Optional類是對原有類的簡單封裝;變量不存在時是會返回Optional.empty() 空對象
    注意:
    1、Optional.empty()對象和NULL有著本質的區別,引用null會報錯,而引用Optional.empty()對象不會
    2、Optional<T> 在語義上可以表示允許該類為空
  • 2、Optional創建

// 創建空的Optional對象
Optional<T> optObj=Optional.empty()
//創建非空對象
Optional<T> optObj=Optional.of(T類對象實例)
// 創建可接受null的Optional
Optional<T> optObj=Optional.ofNullable(T類對象實例)
由于這種對象一般都會調用相應方法,Optional提供了相應的map和filter方法,返回都是Optional封裝的對象

注意:
如果方法返回值是Optional對象,又調用map方法,那最終得到的返回值為Optional<Optional<T>>類型
這種就不能連續使用map或者filter方法

解決:
使用flatMap方法,它會把多個Optional嵌套變成一個Optional對象

關于Optional 值得獲取方式,常用的方式有:

  • 1、get() 為空時 會報錯,不建議 ,因為與Null基本一致
  • 2、orElse(T other) 在對象不包含值時會提供一個默認值 建議

3、應用

用Optional 封裝可能為null的值,如

    Object value=map.get("key");
    Optional<Object> value=Optional.ofnullable(map.get("key"));     
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容