JDK8,Optional
Posted zhoubb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK8,Optional相关的知识,希望对你有一定的参考价值。
作为程序员,你肯定遇到过NullPointerException, 这个异常对于初出茅庐的新人, 还是久经江湖的老手都是不可避免的痛, 可又是那么的无能为力,为了解决它,你只能在使用某个值之前,对其进行判空处理。然而这样会使得代码变得臃肿不堪。幸好jdk8引入了optional来处理了null的问题,使得我们可以不再对null做过多的关心。
先展示jdk8之前的写法
如果不对方法拿到的user 进行空判断,下面获取其属性很容易就会出现空指针异常。
jdk 8 写法
这种写法就避免了空的判断,代码显得很简便
下面介绍下 optional 的方法
1、首先是构造 of, ofNullable, empty
看下ofNullable 方法源码
2、 获取 ifPresent, get, isPresent
最开始的例子也可以用isPresent来这样改,但是这样和原先判空并没有什么区别,只是方法不同而已,本质没区别,所以不推荐。看下这几个方法的源码
3、获取 orElse, orElseGet, orElseThrow
看下源码
orElseThrow 同理
4、过滤 filter
5、转化 map, flatMap
看源码知道,map 和 flatmap 都是如果optional中的值存在,就对该值执行提供的Function函数调用,返回一个optional类型的值,否
则就返回一个空的optional对象。
最大的区别是map 函数执行之后是任意的类型数据,调用结束map 会再用optional对结果进行包装,而flatmap 是执行完之后就是一个optional 实例 ,flatmap 不会对结果进行optional封装。
以上是关于JDK8,Optional的主要内容,如果未能解决你的问题,请参考以下文章