JPA中关于optional的orElse和orElseGet

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

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

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


没用optional之前

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


用了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


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。