JDK8 Java 中遇到null 和爲空的狀況,使用Optional來解決。

對於業務代碼,寫的最多的估計就是if{}...else{}這xx玩意了,有時候又想能不能減小几行,可是這就可能在上線項目時,(不是咱們的問題,是數據的問題)形成報出空指針異常這種xx狀況。java

可是在jdk8及以上版本,有了Optional,真的可以極大地避免這種狀況的出現。app

JDK 提供三個靜態方法來構造一個 Optional

  1. Optional.of(T value) :傳入的參數不能爲null
  2. Optional.ofNullable(T value) :與of方法的區別是,能夠傳入爲null的參數,如若爲null則調用Optional.empty()
Public static  <T> Optional <T> ofnullable (T value)

return value null empty (): of (value) i

    3.Optional.empty():該方法用來構造一個空的 Optional,即該 Optional 中不包含值函數

private static final Optional<?> EMPTY = new Optional<>();

private final T value;

private Optional(){
    this.value = null;
}

Optional 提供的經常使用方法

  • orElse: 若是Optional 中有值則將其返回,不然返回 orElse 方法傳入的參數。
User user = Optional
        .ofNullable(getUserById(id))
        .orElse(new User(0, "Unknown"));
        
System.out.println("Username is: " + user.getUsername());
  • orElseThrow:orElseThrow 與 orElse 方法的區別在於,orElseThrow 方法當 Optional 中有值的時候,返回值;沒有值的時候會拋出異常this

  • map:若是當前 Optional 爲 Optional.empty,則依舊返回 Optional.empty;不然返回一個新的 Optional,該 Optional 包含的是:函數 mapper 在以 value 做爲輸入時的輸出值,並且咱們能夠屢次使用 map 操做。spa

相關文章
相關標籤/搜索