Optional 常用(use)方法總結

2022-09-30 欄目:技術知識

Optional 類是(yes) JAVA 8 提供的(of)判斷程序是(yes)否爲(for)空提供的(of)包裝工具類;可以(by)減少代碼中的(of) 是(yes)否爲(for)空的(of)判斷,以(by)及減少 NullPointerExceptions;使得程序變得更爲(for)健壯;有助于(At)創建簡單、可讀性更強、比對應程序錯誤更少的(of)程序。

Optional 常用(use)的(of)方法總結:

  • empty : 創建一(one)個(indivual)空的(of)Optional對象

  • of:爲(for)非null的(of)值創建一(one)個(indivual)Optional。of方法通過工廠方法創建Optional類。需要(want)注意的(of)是(yes),創建對象時(hour)傳入的(of)參數不(No)能爲(for)null。如果傳入參數爲(for)null,則抛出(out)NullPointerException。因此不(No)經常用(use)。

  • ofNullable:爲(for)指定的(of)值創建一(one)個(indivual)Optional,如果指定的(of)值爲(for)null,則返回一(one)個(indivual)空的(of)Optional。

  • isPresent: 檢查一(one)個(indivual)Optional對象中是(yes)否有值,隻有值非空才返回truex,否則返回false。

  • ifPresent:如果Optional實例有值則爲(for)其調用(use)consumer,否則不(No)做處理

  • get:如果Optional有值則将其返回,否則抛出(out)NoSuchElementException。因此也不(No)經常用(use)。

  • orElse:如果有值則将其返回,否則返回指定的(of)其它值。經常用(use)于(At)判斷返回默認值的(of)場景;

  • orElseGet:orElseGet與orElse方法類似,區别在(exist)于(At)得到(arrive)的(of)默認值。orElse方法将傳入的(of)字符串作(do)爲(for)默認值,orElseGet方法可以(by)接受Supplier接口的(of)實現用(use)來(Come)生(born)成默認值

  • orElseThrow:如果有值則将其返回,否則抛出(out)supplier接口創建的(of)異常。

  • filter: 接收一(one)個(indivual)函數式接口 ,如果有值并且滿足斷言條件返回包含該值的(of)Optional,否則返回空Optional。

  • map:如果有值,則對其執行調用(use)mapping函數得到(arrive)返回值。如果返回值不(No)爲(for)null,則創建包含mapping返回值的(of)Optional作(do)爲(for)map方法返回值,否則返回空Optional。

  • flatMap:如果有值,爲(for)其執行mapping函數返回Optional類型返回值,否則返回空Optional。

 

通過示例查看 optional 帶來(Come)的(of)好處 

  示例一(one)

 

根據用(use)戶的(of)對象獲取用(use)戶的(of)名稱,如果存在(exist)則返回用(use)戶名稱,沒有則返回 unknown ;沒有使用(use) Option 的(of) Java 實現代碼如下:

沒有使用(use)Optional 時(hour),需要(want)不(No)斷的(of)判斷是(yes)否爲(for)空,降低了(Got it)代碼的(of)可讀性和(and)維護性,使用(use) Optional 之後,代碼如下:

使用(use)Optional 之後,通過一(one)行便完成了(Got it) 上(superior)述的(of)功能,減少了(Got it)層層的(of) if 判斷

  示例 二

 

從一(one)批學生(born)中,選出(out)年齡大(big)于(At)等于(At)18,參加過考試并且成績大(big)于(At)80的(of)人(people)去參加比賽。