對於業務代碼,寫的最多的估計就是if{}...else{}這xx玩意了,有時候又想能不能減小几行,可是這就可能在上線項目時,(不是咱們的問題,是數據的問題)形成報出空指針異常這種xx狀況。java
可是在jdk8及以上版本,有了Optional,真的可以極大地避免這種狀況的出現。app
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; }
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