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来组合可选值函数

    五、聚合操作

  • 相关阅读:
    453. Minimum Moves to Equal Array Elements
    CDH的安装
    Java注解
    BeanUtils--内省加强
    Java内省
    ant工具
    log4j的配置及使用
    武汉科技大学ACM:1010: 零起点学算法89——母牛的故事
    武汉科技大学ACM:1009: 华科版C语言程序设计教程(第二版)例题5.4
    武汉科技大学ACM:1007: 不高兴的津津
  • 原文地址:https://www.cnblogs.com/Shadowplay/p/11103348.html
Copyright © 2011-2022 走看看