Optional 的基本用法
參考:
https://www.cnblogs.com/xingzc/p/5778090.html
http://www.runoob.com/java/java8-optional-class.html
?
| empty | static <T> Optional<T> empty() 返回空的 Optional 實(shí)例。 |
| equals | boolean equals(Object obj) 判斷其他對象是否等于 Optional。 |
| filter | Optional<T> filter(Predicate<? super <T> predicate) 如果值存在,并且這個(gè)值匹配給定的 predicate,返回一個(gè)Optional用以描述這個(gè)值,否則返回一個(gè)空的Optional。 |
| flatMap | <U> Optional<U> flatMap(Function<? super T,Optional<U>> mapper) 如果值存在,返回基于Optional包含的映射方法的值,否則返回一個(gè)空的Optional |
| get | T get() 如果在這個(gè)Optional中包含這個(gè)值,返回值,否則拋出異常:NoSuchElementException |
| hashCode | int hashCode() 返回存在值的哈希碼,如果值不存在 返回 0。 |
| ifPresent | void ifPresent(Consumer<? super T> consumer) 如果值存在則使用該值調(diào)用 consumer , 否則不做任何事情。 |
| isPresent | boolean isPresent() 如果值存在則方法會返回true,否則返回 false。 |
| map | <U>Optional<U> map(Function<? super T,? extends U> mapper) 如果存在該值,提供的映射方法,如果返回非null,返回一個(gè)Optional描述結(jié)果。 |
| of | static <T> Optional<T> of(T value) 返回一個(gè)指定非null值的Optional。 |
| ofNullable | static <T> Optional<T> ofNullable(T value) 如果為非空,返回 Optional 描述的指定值,否則返回空的 Optional。 |
| orElse | T orElse(T other) 如果存在該值,返回值, 否則返回 other。 |
| orElseGet | T orElseGet(Supplier<? extends T> other) 如果存在該值,返回值, 否則觸發(fā) other,并返回 other 調(diào)用的結(jié)果。 |
| orElseThrow | <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) ? 如果存在該值,返回包含的值,否則拋出由 Supplier 繼承的異常 |
| toString | String toString() 返回一個(gè)Optional的非空字符串,用來調(diào)試 |
?
Optional 可以解決空指針異常, 但是, 如果使用不到, 反而會引起更多的問題呢.
?
比如get 方法, 就可以出現(xiàn)NoSuchElementException , 這就不僅僅是null 的麻煩了, 而是直接出現(xiàn)了 npe, 麻蛋.
java.util.NoSuchElementException: No value present
at java.util.Optional.get(Optional.java:135)
null 有時(shí)候是無法避免的, 怎么辦? 進(jìn)行isPresent 判斷嗎? 感覺更加麻煩了...??這樣吧:??orElse(null)?
posted on 2018-07-06 10:17 CanntBelieve 閱讀(...) 評論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/FlyAway2013/p/9272153.html
總結(jié)
以上是生活随笔為你收集整理的Optional 的基本用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 去重算法
- 下一篇: 近期打算及毕业前要补完的题