Module java.base
Package java.util

Class OptionalDouble

java.lang.Object
java.util.OptionalDouble

public final class OptionalDouble extends Object
一个容器对象,可能包含也可能不包含double值。如果存在值,则isPresent()返回true。如果没有值,则对象被视为isPresent()返回false

提供了依赖于包含值的存在或不存在的其他方法,例如orElse()(如果没有值,则返回默认值)和ifPresent()(如果存在值,则执行操作)。

这是一个基于值的类;程序员应该将相等的实例视为可互换,并且不应该将实例用于同步,否则可能会发生不可预测的行为。例如,在将来的版本中,同步可能会失败。

API 注意:
OptionalDouble 主要用作方法返回类型,其中明确需要表示“无结果”。类型为OptionalDouble的变量本身不应该是null;它应该始终指向一个OptionalDouble实例。
自 JDK 版本:
1.8
  • Method Summary

    Modifier and Type
    Method
    Description
    empty()
    返回一个空的OptionalDouble实例。
    boolean
    equals(Object obj)
    指示某个其他对象是否“等于”此OptionalDouble
    double
    如果存在值,则返回该值,否则抛出NoSuchElementException
    int
    返回值的哈希码(如果存在值),否则如果没有值,则返回0(零)。
    void
    如果存在值,则使用该值执行给定操作,否则不执行任何操作。
    void
    ifPresentOrElse(DoubleConsumer action, Runnable emptyAction)
    如果存在值,则使用该值执行给定操作,否则执行给定的基于空值的操作。
    boolean
    如果值不存在,则返回true,否则返回false
    boolean
    如果存在值,则返回true,否则返回false
    of(double value)
    返回描述给定值的OptionalDouble
    double
    orElse(double other)
    如果存在值,则返回该值,否则返回other
    double
    如果存在值,则返回该值,否则返回由提供函数生成的结果。
    double
    如果存在值,则返回该值,否则抛出NoSuchElementException
    <X extends Throwable>
    double
    orElseThrow(Supplier<? extends X> exceptionSupplier)
    如果存在值,则返回该值,否则抛出由异常提供函数生成的异常。
    stream()
    如果存在值,则返回仅包含该值的顺序DoubleStream,否则返回一个空的DoubleStream
    返回此OptionalDouble的非空字符串表示形式,适用于调试。

    Methods declared in class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Method Details

    • empty

      public static OptionalDouble empty()
      返回一个空的OptionalDouble实例。对于此OptionalDouble,不存在值。
      API 注意:
      尽管这样做可能很诱人,但避免通过与OptionalDouble.empty()返回的实例进行==!=比较来测试对象是否为空。不能保证它是单例的。而是使用isEmpty()isPresent()
      返回:
      一个空的OptionalDouble
    • of

      public static OptionalDouble of(double value)
      返回描述给定值的OptionalDouble
      参数:
      value - 要描述的值
      返回:
      一个具有值的OptionalDouble
    • getAsDouble

      public double getAsDouble()
      如果存在值,则返回该值,否则抛出NoSuchElementException
      API 注意:
      此方法的首选替代方法是orElseThrow()
      返回:
      由此OptionalDouble描述的值
      抛出:
      NoSuchElementException - 如果不存在值
    • isPresent

      public boolean isPresent()
      如果存在值,则返回true,否则返回false
      返回:
      如果存在值,则返回true,否则返回false
    • isEmpty

      public boolean isEmpty()
      如果不存在值,则返回true,否则返回false
      返回:
      如果不存在值,则返回true,否则返回false
      自 JDK 版本:
      11
    • ifPresent

      public void ifPresent(DoubleConsumer action)
      如果存在值,则执行给定操作,否则不执行任何操作。
      参数:
      action - 如果存在值,则要执行的操作
      抛出:
      NullPointerException - 如果存在值且给定操作为null
    • ifPresentOrElse

      public void ifPresentOrElse(DoubleConsumer action, Runnable emptyAction)
      如果存在值,则执行给定操作,否则执行给定的基于空值的操作。
      参数:
      action - 如果存在值,则要执行的操作
      emptyAction - 如果不存在值,则要执行的基于空值的操作
      抛出:
      NullPointerException - 如果存在值且给定操作为null,或者不存在值且给定基于空值的操作为null
      自 JDK 版本:
      9
    • stream

      public DoubleStream stream()
      如果存在值,则返回一个顺序DoubleStream,其中仅包含该值,否则返回一个空的DoubleStream
      API 注意:
      此方法可用于将可选双精度值的Stream转换为包含存在值的DoubleStream
      
             Stream<OptionalDouble> os = ..
             DoubleStream s = os.flatMapToDouble(OptionalDouble::stream)
          
      返回:
      作为DoubleStream的可选值
      自 JDK 版本:
      9
    • orElse

      public double orElse(double other)
      如果存在值,则返回该值,否则返回other
      参数:
      other - 如果不存在值,则要返回的值
      返回:
      如果存在值,则返回该值,否则返回other
    • orElseGet

      public double orElseGet(DoubleSupplier supplier)
      如果存在值,则返回该值,否则返回由提供函数生成的结果。
      参数:
      supplier - 生成要返回的值的提供函数
      返回:
      如果存在值,则返回该值,否则返回由提供函数生成的结果
      抛出:
      NullPointerException - 如果不存在值且提供函数为null
    • orElseThrow

      public double orElseThrow()
      如果存在值,则返回该值,否则抛出NoSuchElementException
      返回:
      由此OptionalDouble描述的值
      抛出:
      NoSuchElementException - 如果不存在值
      自 JDK 版本:
      10
    • orElseThrow

      public <X extends Throwable> double orElseThrow(Supplier<? extends X> exceptionSupplier) throws X
      如果存在值,则返回该值,否则抛出由异常提供函数生成的异常。
      API 注意:
      可以使用对异常构造函数的方法引用作为提供函数。例如,IllegalStateException::new
      类型参数:
      X - 要抛出的异常的类型
      参数:
      exceptionSupplier - 生成要抛出的异常的提供函数
      返回:
      如果存在值,则返回该值
      抛出:
      X - 如果不存在值
      NullPointerException - 如果不存在值且异常提供函数为null
    • equals

      public boolean equals(Object obj)
      指示某个其他对象是否“等于”此OptionalDouble。如果满足以下条件,则认为另一个对象是相等的:
      • 它也是一个OptionalDouble且;
      • 两个实例都没有值或;
      • 通过Double.compare() == 0,存在的值是“相等”的。
      覆盖:
      equals 在类 Object
      参数:
      obj - 要测试其是否相等的对象
      返回:
      如果另一个对象“等于”此对象,则返回true,否则返回false
      参见:
    • hashCode

      public int hashCode()
      返回值的哈希码(如果存在值),否则如果没有值,则返回0(零)。
      覆盖:
      hashCode 在类 Object
      返回:
      存在值的哈希码值,否则如果没有值,则返回0
      参见:
    • toString

      public String toString()
      返回此OptionalDouble的非空字符串表示形式,适用于调试。确切的呈现格式未指定,可能会在实现和版本之间有所变化。
      覆盖:
      toString 在类 Object
      实现要求:
      如果存在值,则结果必须包括其字符串表示形式。空的和存在的OptionalDouble必须能够明确区分。
      返回:
      此实例的字符串表示形式