Java8 中 Optional 类

Optional

Optional 的出现是为了避免令人厌烦的 NullPointerException, 实际上就是一个包含对原对象的引用得类.

Optional 内有一个名为 value 的成员变量. 是对原对象的引用

  1. 创建 Optional

    1. Optional.empty():Optional

      创建一个引用为 null 的 Optional 对象

    2. Optional.of(T):Optional

      创建一个引用为 T 的 Optional 对象. 通过此方法创建时. T 不可为 null . 否则将抛出 NullPointerException.

    3. Optional.ofNullable(T):Optional

      创建一个引用为 T 的 Optional 对象. 通过此方法创建时. 如果 T 为 null . 则返回 Optional.empty()

  2. 判断 Optional 中的值是否存在

    1. Optional.isPresent():boolean

      此方法判断 Optional 中的 value 是否为空. 不为空是返回 true

    2. Optional.ifPresent(Consumer):void

      此方法当 Optional 中的 value 不为空时. 执行传入的 Comsumer 代码

  3. 对 Optional 中的值进行过滤

    1. Optional.filter(Predicate):Optional

      此方法当 Optional 中的 value 不为空时. 执行传入的 Predicate 代码, 通过时返回当前对象. 否则返回 Optional.empty()

  4. 对 Optional 中的值进行转化

    1. Optional.map(Function mapper):Optional

      对数据提取或转化

      此方法当 Optional 中的 value 不为空时. 执行传入的 Function 代码, 将此 Optional 对象转化为 Function代码返回的类型的 Optional 对象.

      Function代码的返回值为 Object, 将自动被 Optional 包装

    2. Optional.flatMap(Function> mapper):Optional

      转化 Optional 对象

      此方法当 Optional 中的 value 不为空时. 执行传入的 Function 代码, 将此 Optional 对象转化为 Function代码返回的类型的 Optional 对象.

      Function代码的返回值为 Optional

    3. 获取 Optional 中的值

      1. Optional.get():T

        获取当前 Optional 中的 value, 当此 Optional 中的 value 为空时, 抛出 NoSuchElementException , 所以在此方法调用前建议通过 Optional.isPresent() 方法进行判断.

      2. Optional.orElse(T):T

        获取当前 Optional 中的value, 当此 Optional 中的 value 为空时, 返回方法参数中的值.

      3. Optional.orElseGet(Supplier):T

        获取当前 Optional 中的value, 当此 Optional 中的 value 为空时, 返回传入的 Supplier代码执行后获得的值.

      4. Optional.orElseThrow(Supplier):T

        获取当前 Optional 中的value, 当此 Optional 中的 value 为空时, 抛出执行传入的Supplier代码后获得的异常.

    4. 你可能感兴趣的:(Java8 中 Optional 类)