概述
前言
上篇文章中我们提到了空指针异常以及利用Optional类处理空指针异常的几个方法,现在我们继续说下Optional类剩下的几个常用方法。
1 、Optional.map()方法(对象进行二次包装)
map()方法将对应的funcation函数式接口中的对象进行二次运算,封装成新的对象后将新的对象返回在Optional中。
简单实例
对值进行处理,如果有值,返回处理后的Optional,如果无值则返回Optional.empty()
1.1、Optional.flatMap()方法
flatMap()方法和map()方法基本一样,不同的是map方法的函数返回可以是任意类型,而flatMap方法的函数返回必须是Optional类型。
简单实例
1.2、Optional.orElse()方法(为空返回对象)
orElse()方法也是Optional类的常用方法之一,该方法的大致含义是如果包装对象为空,就执行roElse方法里的value,如果非空,则返回写入的对象。
简单实例
这里返回的值是 李四
这里返回的值是 张三
同时orElse方法可以和map方法一起使用
如果传入的对象为空,则返回orElse方法中的内容,如果传入的对象不为空,直接返回对象的属性值。
1.3、Optional.orElseGet()方法(为空返回Supplier对象)
orElseGet()方法与orElse()方法非常相似,但入参不一样,入参为Supplier对象,为空返回传入对象的 .get()方法,非空则返回当前对象。
Supplier 是一个接口,是类似Spring的懒加载,声明之后并不会占用内存,只有执行了get()方法后,才会调用构造方法创建出对象。Supplier语法创建对象:
Supplier<Person> supPerson = Person::new
简单实例
返回值为 张三
1.4、Optional.orElseThrow()方法(为空返回异常)
该方法的作用是对象为空时,抛出异常,如果对象不为空,则返回当前对象。
简单实例
返回值为 张三
返回的是异常
2、jdk1.9 对Optional类的优化
在jdk1.9中,Optional类增加了三个方法,分别是 or() 、ifPresentOrElse() 、stream()
- or()方法与orElse()方法相似,如果对象不为空,返回对象,如果对象为空则返回 or()方法中设置的值。
- ifPresentOrElse()方法中存在两个参数:Consumer 和 Runnable。如果对象不为空,会执行Consumer 的动作,如果对象为空,执行Runnable。它相比于ifPresent来说,多了一个OrElse判断。
- stream()方法将Optional转换成stream,如果有值就返回包含值的stream对象,如果没有值,就返回空的stream对象。
最后
以上就是曾经手机为你收集整理的高效处理NPE(空指针)异常的方法(二)的全部内容,希望文章能够帮你解决高效处理NPE(空指针)异常的方法(二)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复