zoukankan      html  css  js  c++  java
  • java8中的Optional

    Optional

    1. 获取Optional:

      JDK提供了三个静态方法获取Optional :

      1). Optional.of(T value): 通过一个非 null 的 value 来构造一个 Optional,传入的value不可为null
      2). Optional.ofNullable(T value): 可传入一个为null的value来构造一个Optional
      3). Optional.empty(): 创建一个空的Optional.

    2.  Optional使用方法:

      1). ifPresent: 如果 Optional 中有值,则对该值调用 consumer.accept,否则什么也不做。源码:

    1 public void ifPresent(Consumer<? super T> consumer) {
    2     if (value != null)
    3     consumer.accept(value);
    4 }

      2)orElse:如果 Optional 中有值则将其返回,否则返回 orElse 方法传入的参数。源码:

    public T orElse(T other) {
        return value != null ? value : other;
    }

      3) orElseGet: orElseGet 与 orElse 方法的区别在于,orElseGet 方法传入的参数为一个 Supplier 接口的实现,

                当 Optional 中有值的时候,返回值;当 Optional 中没有值的时候,返回从该 Supplier 获得的值。

      4)orElseThrow(): 如果有值则返回值,没有值则抛出错误

      5)map(): 果当前 Optional 为 Optional.empty,则依旧返回 Optional.empty;否则返回一个新的 Optional,该 Optional 包含的是:函数 mapper 在以 value 作为输  入时的输出值。

      6)flatMap(): map 方法参数中的函数 mapper 输出的是值,然后 map 方法会使用 Optional.ofNullable 将其包装为 Optional;而 flatMap 要求参数中的函数 mapper  输出的就是 Optional

    详情参考:https://www.jianshu.com/p/82ed16613072

  • 相关阅读:
    zookeeper安装和使用(Windows环境)
    eclipse如何以指定JDK启动
    unity 与 android 协调工作 注意事项
    unity 嵌入 百度分享 与 游戏内购物 iap
    unity 引用 移动mm 支付sdk
    unity 基础之PhysicsManager
    Unity3d与android通信
    Unity3D连接真机调试教程,可抓断点
    Unity之串口通信(基于三姿态传感器)
    unity3d中dllimport方法的使用,以接入腾讯平台为例!!!
  • 原文地址:https://www.cnblogs.com/rain-in-summer/p/13718707.html
Copyright © 2011-2022 走看看