空指標異常處理 Optional類
阿新 • • 發佈:2021-01-09
Optional各方法的作用
public static Optional of(T value)
獲取一個Java物件的Optional物件,如果value為null,會丟擲NullPointerException,不推薦使用
public static Optional ofNullable(T value)
與上一個of方法類似,不同之處在於如果value為空時,會返回一個空的Optional(物件裡的value為null)
public T get()
獲取Optional中的value, value為空時會丟擲NoSuchElementException
public boolean isPresent()
判斷Optional中的value存在,不為null時返回true;為null時返回false
public void ifPresent(Consumer<? super T> consumer)
如果Optional中的value存在,不為null時, 則對value傳入consumer.accept()進行處理;否則什麼也不做
public Optional filter(Predicate<? super T> predicate)
過濾操作,如果Optional中的value不為null,則根據條件過濾;否則什麼也不做
public Optional map(Function<? super T, ? extends U> mapper)
轉化操作,如果Optional中的value不為null,則進行轉化;否則什麼也不做
public Optional flatMap(Function<? super T, Optional> mapper)
轉化操作,如果Optional中的value不為null,則進行轉化;否則什麼也不做, 與map的不同之處在於,map的返回值Optional物件是在map方法裡面自動封裝好了。而flatMap方法需要在自己的實現邏輯中封裝成Optional
public T orElse(T other)
//Optional中的value不為null, 返回value;否則返回傳入的other
public T orElse(T other) {
return value != null ? value : other;
}
public T orElseGet(Supplier<? extends T> other)
//Optional中的value不為null, 返回value;否則返回傳入的other的value
public T orElseGet(Supplier<? extends T> other) {
return value != null ? value : other.get();
}
public T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X
//Optional中的value不為null, 返回value;否則返回丟擲傳入的異常
public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X {
if (value != null) {
return value;
} else {
throw exceptionSupplier.get();
}
}