zoukankan      html  css  js  c++  java
  • Java8 Optional

    Optional

    一、Optional 类型

    Optional<T> 对象或者是一个对T对象的封装,或者表示不是任何对象。

    如果存在被T类型的对象,get方法会返回该对象,否则抛出NoSuchElementException。因此:

    Optional<T>   value = .......;
    value.get().aMethod();
    //并不比下面的方式更安全
    T value = ...;
    value.aMethod();

    isPresent()方法会反映出一个Optional<T>对象是否有值。但这也并不比做非空检验简单。

    二、使用Optional的值

    高效使用Optional的关键在于,使用一个或者接收正确值、或者返回另一个替代值的方法。

    1.当值存在,进行操作,不存在什么都不做

    ifPresent方法的另一种形式可以接受一个函数。如果存在可选值,那么就传递该值给函数,

    否则不进行任何操作。因此if语句可以改写为:

    optionalValue.ifPresent(v results.add(v));

    当以上面的形式调用时,不会返回任何值,如果需要对结果进行处理可使用map方法:

    Optional<Boolean> added = optionalValue.map(result::add);

    2.没有值存在时,产生一个可选值或抛出异常:

    //如果没有给一个空串
    String result = optionalString.orEles("");

    也可以:

    String result = optionalStr.orElseGet(() -> System.getProperty("user.dir"));

    还可以:

    String result = optionalString.orElseThrow(NoSuchElementException::new);

    三、创建可选值

    前面讨论的如何处理一个其他人创建的Optional对象。如果你想编写一个创建Optional对象的方法,

    有一些静态方法可以选择。例如,Optional.of(result)或者Optional.empty():

    public static Optional<Double> inverse(Double x) {
        return x == 0 ? Optional.empty() : Optional.of(1 / x);
    }

    ofNullable方法被设计为null值和可选值之间的一座桥梁。如果obj不为null,

    那么Optional.ofNullable(obj)会返回Optional.of(obj)否则返回Optional.empty().

    四、使用flatMap来组合可选值函数

    五、聚合操作

  • 相关阅读:
    WebService安全 文件夹 目录安全性 身份验证与访问控制
    爱情故事[转载自:学狼网]
    未来中国最受宠的人才
    [引]SQL Server : 系统存储过程
    VS 安装项目 :通过文本框得到用户输入 以及 安装后运行某程序(如打开C:\\a.html)
    人人都能成为百万富翁
    成功原来这样简单
    精典谚语
    利用WinForm 更好的实现Web安装程序的更多功能
    升级安装包的制作
  • 原文地址:https://www.cnblogs.com/Shadowplay/p/11103348.html
Copyright © 2011-2022 走看看