1、Optional是java8中增加的API,可以很好的解决空指针异常,而不用我们来进行显式的空值检测。
2、Java8中的APIOptional中的方法,获取Optional中的值用get()方法就可以了,那么和orElse()、orElseGet()的获取值的方法有什么不同呢?
3、当我们在IDEA中使用get()时,IDEA会高亮提示,此方法需要先用isPresent()进行判断,然后再调用get()方法。
4、而有了Optional后代码如果写成下面这样,其实并没有多大区别
那么我们如果正确使用Optional的获取值的方法呢?
就要提到orElse和orElseGet了。
用法:
orElse
如果Optional实例有值则将其返回,否则返回orElse方法传入的参数
public T orElse(T other);
参数:other,即需要被返回的值
返回:当只存在时返回值,不存在返回other(可以理解为自定义值,如字符串的内容)
例子:
orElseGet
orElseGet与orElse方法类似,区别在于得到的默认值。orElse方法将传入的字符串作为默认值,orElseGet方法可以接受Supplier的实现用来生成默认值
publicTorElseGet(Supplier<?extendsT>other);
参数:继承Supplier接口的other,当值为null的时候返回
返回:值存在返回值,值不存在返回other
异常:当不允许值为空的情况(例如)下值为空时或other无效抛NullPointerException