温故 Java 8 中引入的 Optional 类
2018-12-04 本文已影响14人
craneyuan
前言
为什么要有Optional
类?(它试图去解决什么问题呢?)
答:Optional
类试图去解决Java系统中大量出现的NullPointerException
问题和繁琐的null
检查。
使用
Optional
常用方法:
- 创建 Optional 对象,使用
of(T)
或者ofNullable(T)
,它们的不同点在于对于传入的参数为null
时,是如何处理的。-
of(T)
如果传入的参数为null
,会报NullPointerException
-
ofNullable(T)
如果传入的参数为null
,它会返回一个empty
的Optional对象。
-
-
ifPresent()
判断是否有值(不推荐直接使用这个方法,看看是否可以使用orElse(T)
方法) -
get()
获取值;这个方法迷惑性比较大,如果直接调用,在没有值的情况下,会报NoSuchElementException
异常。 - 设置默认值,
orElse(T)
或者orElseGet(T)
;orElseGet(T)
是orElse(T)
的延迟调用版。 -
orElseThrow(T)
没有值的情况抛异常
filter()、map()、flatMap()
等方法就不记了,用法同 Java 8 的 Stream中的相关方法。
后记
未完待续。