java8 optional笔记

一、原因:

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

二、使用方法

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

// 创建空的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 值得获取方式,常用的方式有:

  • 1、get() 为空时 会报错,不建议 ,因为与Null基本一致
  • 2、orElse(T other) 在对象不包含值时会提供一个默认值 建议

3、应用

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

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

推荐阅读更多精彩内容