1 创建Optional
(常用)Optional.ofNullable(T);
Optional.of(T);
new Optional(T);
Optional.empty();//创建一个包装对象值为空的Optional对象
2 使用Optional
(常用)Optional.get()方法(返回对象的值) ;//返回一个option的实例值
(常用) Optional.isPresent()方法(判读是否为空);//对象不为空则为真,如果为空则false
(常用) Optional.ifPresent()方法(判读是否为空并返回函数)//如果对象非空,则运行函数体
Optional.filter()方法(过滤对象)//接受一个对象,然后对他进行条件过滤,如果条件符合则返回Optional对象本身,如果不符合则返回空Optional
Optional.flatMap()方法(Optional对象进行二次包装)//进行二次运算,封装成新的对象然后返回在Optional中;
(常用) Optional.orElse()方法(为空返回对象)//如果包装对象为空的话,就执行orElse方法里的value,如果非空,则返回写入对象
Optional.orElseGet()方法(为空返回Supplier对象)//为空返回传入对象的.get()方法,如果非空则返回当前对象。
(常用) Optional.orElseThrow()方法(为空返回异常)//如果为空,就抛出你定义的异常,如果不为空返回当前对象,在实战中所有异常肯定是要处理好的,为了代码的可读性
相似方法进行对比分析
可能看到这,没用用过的话会觉得orElse()
和orElseGet()
还有orElseThrow()
很相似,map()和flatMap()好相似,不用着急,都是从这一步过来的,我再给大家总结一下不同方法的异同点 orElse()
和orElseGet()
和orElseThrow()
的异同点
方法效果类似,如果对象不为空,则返回对象,如果为空,则返回方法体中的对应参数,所以可以看出这三个方法体中参数是不一样的 orElse(T 对象) orElseGet(Supplier < T >
对象) orElseThrow(异常)
map()和orElseGet的异同点
方法效果类似,对方法参数进行二次包装,并返回,入参不同 map(function函数) flatmap(Optional< function >
函数)