Optional提供了很多檢測對象值的方法, 很好的解決了空指針異常
get()用來獲取對象的值, 但是值爲空就拋異常
orElse(T other)方法也是獲取對象的值, 和get()不同的是, orElse方法可以傳一個其他值, 如果獲取的對象值爲空, 則返回傳入的其他值
用例:
Optional<Boolean> result = Optional.empty(); // 有可能爲空:拋異常 if (result.get()) { } // 先判斷空再取值,調用兩個方法 if (result.isPresent() && result.get()) { } // 使用orElse方法, 如果爲空, 返回false if (result.orElse(false)) { }
使用orElse方法使用起來方便又簡潔
看一下源碼
public T orElse(T other) { return value != null ? value : other; }