java8 optional笔记

2018-11-08  本文已影响5人  我的轩辕

一、原因:

为避免nullPointException错误,一般都是进行显示的!=null判断,对于一些代码嵌套比较深的代码,会多出很多if-else,而且代码的拓展性和可读性较差。

二、使用方法

  • 1、Optional类是对原有类的一次封装
    变量存在时,Optional类是对原有类的简单封装;变量不存在时是会返回Optional.empty() 空对象
    注意:
    1、Optional.empty()对象和NULL有着本质的区别,引用null会报错,而引用Optional.empty()对象不会
    2、Optional<T> 在语义上可以表示允许该类为空

// 创建空的Optional对象
Optional<T> optObj=Optional.empty()
//创建非空对象
Optional<T> optObj=Optional.of(T类对象实例)
// 创建可接受null的Optional
Optional<T> optObj=Optional.ofNullable(T类对象实例)
由于这种对象一般都会调用相应方法,Optional提供了相应的map和filter方法,返回都是Optional封装的对象

注意:
如果方法返回值是Optional对象,又调用map方法,那最终得到的返回值为Optional<Optional<T>>类型
这种就不能连续使用map或者filter方法

解决:
使用flatMap方法,它会把多个Optional嵌套变成一个Optional对象

关于Optional 值得获取方式,常用的方式有:

3、应用

用Optional 封装可能为null的值,如

    Object value=map.get("key");
    Optional<Object> value=Optional.ofnullable(map.get("key"));     
上一篇 下一篇

猜你喜欢

热点阅读