美文网首页
java8 optional笔记

java8 optional笔记

作者: 我的轩辕 | 来源:发表于2018-11-08 20:13 被阅读5次

一、原因:

为避免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"));     

相关文章

  • Optional

    Java8中Optional为util包中一个类 创建Optional对象 Optional.of() 传入对象不...

  • JAVA8新特性-Optional类解决NPE问题

    ** JAVA8新特性-Optional类解决NPE问题** API介绍 1、Optional(T value),...

  • Optional源码分析(未完)

    Optional源码分析(未完) Optional 类是Java8的新特性,Optional是一个可以为null的...

  • Java8笔记(5)

    Java8笔记(5) 用 Optional 取代 null 如何为缺失的值建模 假设你需要处理下面这样的嵌套对象,...

  • java8 optional笔记

    一、原因: 为避免nullPointException错误,一般都是进行显示的!=null判断,对于一些代码嵌套比...

  • Optional类

    Optional类为Java8新引入的一个类,Optional是一个可以为null的容器对象,Optional中的...

  • java8 - optional

    optional 是java8的新特性,The purpose of the class is to provid...

  • Optional 类

    Optional 类 声明:java8新特性系列为个人学习笔记,参考地址点击这里,侵删!! 到目前为止,臭名昭著的...

  • 【java8新特性 简述】Optional

    Optional类是Java8为了解决null值判断问题,借鉴google guava类库的Optional类而引...

  • java8中的函数式编程

    作者:刘仁鹏参考资料: 使用 Java8 Optional 的正确姿势 《Java8函数式编程》Richard W...

网友评论

      本文标题:java8 optional笔记

      本文链接:https://www.haomeiwen.com/subject/zfbwxqtx.html