JPA中关于optional的orElse和orElseGet

1、Optional是java8中增加的API,可以很好的解决空指针异常,而不用我们来进行显式的空值检测。

2、Java8中的APIOptional中的方法,获取Optional中的值用get()方法就可以了,那么和orElse()、orElseGet()的获取值的方法有什么不同呢?

3、当我们在IDEA中使用get()时,IDEA会高亮提示,此方法需要先用isPresent()进行判断,然后再调用get()方法。


JPA中关于optional的orElse和orElseGet_第1张图片
没用optional之前

4、而有了Optional后代码如果写成下面这样,其实并没有多大区别


JPA中关于optional的orElse和orElseGet_第2张图片
用了optional

那么我们如果正确使用Optional的获取值的方法呢?

就要提到orElse和orElseGet了。

用法:

orElse

如果Optional实例有值则将其返回,否则返回orElse方法传入的参数

public T orElse(T other);

参数:other,即需要被返回的值

返回:当只存在时返回值,不存在返回other(可以理解为自定义值,如字符串的内容)

例子:

JPA中关于optional的orElse和orElseGet_第3张图片
例子


JPA中关于optional的orElse和orElseGet_第4张图片

orElseGet

orElseGet与orElse方法类似,区别在于得到的默认值。orElse方法将传入的字符串作为默认值,orElseGet方法可以接受Supplier的实现用来生成默认值

publicTorElseGet(Supplierother);

参数:继承Supplier接口的other,当值为null的时候返回

返回:值存在返回值,值不存在返回other

异常:当不允许值为空的情况(例如)下值为空时或other无效抛NullPointerException


JPA中关于optional的orElse和orElseGet_第5张图片

你可能感兴趣的:(JPA中关于optional的orElse和orElseGet)