zoukankan      html  css  js  c++  java
  • Optional

    从 Java 8 引入的一个很有趣的特性是 Optional  类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。

    使用  of() 和 ofNullable() 方法创建包含值的 Optional。两个方法的不同之处在于如果你把 null 值作为参数传递进去,of() 方法会抛出 NullPointerException:因此,你应该明确对象不为 null  的时候使用 of(),如果对象即可能是 null 也可能是非 null,你就应该使用 ofNullable() 方法.

    访问 Optional 对象的值 =======>Optional 实例中取回实际值对象的方法之一是使用 get() 方法。

    验证是否有值========》Optional.ofNullable(),检查是否有值的另一个选择是 ifPresent() 方法。该方法除了执行检查,还接受一个Consumer(消费者) 参数,如果对象不是空的,就对执行传入的 Lambda 表达式。

    返回默认值========》orElse(),它的工作方式非常直接,如果有值则返回该值,否则返回传递给它的参数值。

                                                orElseGet() —— 其行为略有不同。这个方法会在有值的时候返回值,如果没有值,它会执行作为参数传入的 Supplier(供应者) 函数式接口

    返回异常                        orElseThrow()   它会在对象为空的时候抛出异常,而不是返回备选的值:

    转换值    map() 和 flatMap() -----》 String email = Optional.ofNullable(user.map(u -> u.getEmail()).orElse("default@gmail.com");

    过滤值  filter() 接受一个 Predicate 参数,返回测试结果为 true 的值。如果测试结果为 false,会返回一个空的 Optional

    Java 9 为 Optional 类添加了三个方法:or()ifPresentOrElse() 和 stream()

    or() 方法与 orElse() 和 orElseGet() 类似,它们都在对象为空的时候提供了替代情况。or() 的返回值是由 Supplier 参数产生的另一个 Optional 对象。

    stream() 方法,它通过把实例转换为 Stream 对象

    本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。

    方法                                     描述
    of                             把指定的值封装为Optional对象,如果指定的值为null,则抛出NullPointerException
    empty                       创建一个空的Optional对象
    ofNullable                 把指定的值封装为Optional对象,如果指定的值为null,则创建一个空的Optional对象
    get                            如果创建的Optional中有值存在,则返回此值,否则抛出NoSuchElementException
    orElse                       如果创建的Optional中有值存在,则返回此值,否则返回一个默认值
    orElseGet                  如果创建的Optional中有值存在,则返回此值,否则返回一个由Supplier接口生成的值
    orElseThrow              如果创建的Optional中有值存在,则返回此值,否则抛出一个由指定的Supplier接口生成的异常
    filter                            如果创建的Optional中的值满足filter中的条件,则返回包含该值的Optional对象,否则返回一个空的Optional对象
    map                            如果创建的Optional中的值存在,对该值执行提供的Function函数调用
    flagMap                      如果创建的Optional中的值存在,就对该值执行提供的Function函数调用,返回一个Optional类型的值,否则就返回一个空的Optional对象
    isPresent                    如果创建的Optional中的值存在,返回true,否则返回false
    ifPresent                     如果创建的Optional中的值存在,则执行该方法的调用,否则什么也不做

  • 相关阅读:
    Linux安装/卸载软件教程
    X-Window/GNOME/KDE的关系
    GNU和GPL的区别/关系
    VSS迁移详细教程
    VSS+SourceAnywhere for VSS搭建版本控制系统教程
    Windows添加用户和组命令
    Windows开启远程桌面服务(Win10)
    rdesktop安装教程
    Spring控制反转(依赖注入)的最简单说明
    TortioseSVN切换账号教程
  • 原文地址:https://www.cnblogs.com/KL2016/p/14761683.html
Copyright © 2011-2022 走看看