Module  java.base
软件包  java.util

Class OptionalDouble



  • public final class OptionalDouble
    extends Object
    可能包含或可能不包含double值的容器对象。 如果存在值,则isPresent()返回true ,返回值getAsDouble()

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

    这是一个value-based课; 对于OptionalDouble实例,使用身份敏感操作(包括引用等式( == ),身份哈希码或同步)可能会产生不可预测的结果,应该避免。

    API Note:
    OptionalDouble主要用作方法返回类型,其中明确需要表示“无结果”。 类型为OptionalDouble变量本身不应为null ; 它应该总是指向一个OptionalDouble实例。
    从以下版本开始:
    1.8
    • 方法详细信息

      • empty

        public static OptionalDouble empty​()
        返回一个空的OptionalDouble实例。 这个OptionalDouble没有价值。
        API Note:
        虽然它可能是很有诱惑力的话,避免测试如果一个对象是通过比较空==对抗返回实例OptionalDouble.empty() 不能保证是单身人士。 相反,请使用isPresent()
        结果
        一个空的 OptionalDouble
      • of

        public static OptionalDouble of​(double value)
        返回描述给定值的 OptionalDouble
        参数
        value - 要描述的值
        结果
        一个 OptionalDouble的价值存在
      • getAsDouble

        public double getAsDouble​()
        如果值存在,则返回值,否则抛出 NoSuchElementException
        API Note:
        方法 orElseorElseGet通常优于该方法,因为如果该值不存在则返回替代值,而不是抛出异常。
        结果
        该值由此描述 OptionalDouble
        异常
        NoSuchElementException - 如果没有值
        另请参见:
        isPresent()
      • isPresent

        public boolean isPresent​()
        如果值存在,则返回 true ,否则为 false
        结果
        true如果一个值存在,否则 false
      • ifPresent

        public void ifPresent​(DoubleConsumer action)
        如果存在值,则使用该值执行给定的操作,否则不执行任何操作。
        参数
        action - 要执行的操作,如果值存在
        异常
        NullPointerException - 如果值存在且给定的操作是 null
      • ifPresentOrElse

        public void ifPresentOrElse​(DoubleConsumer action,
                                    Runnable emptyAction)
        如果存在值,则使用该值执行给定的操作,否则执行给定的基于空的操作。
        参数
        action - 要执行的操作,如果值存在
        emptyAction - 要执行的基于空的操作,如果没有值
        异常
        NullPointerException - 如果存在值且给定的操作是 null ,或者没有值,而给定的基于空的操作是 null
        从以下版本开始:
        9
      • stream

        public DoubleStream stream​()
        如果存在值,则返回仅包含该值的序列DoubleStream ,否则返回空DoubleStream
        API Note:
        此方法可用于将Stream的可选双精度DoubleStream为目前双打的DoubleStream
           Stream<OptionalDouble> os = .. DoubleStream s = os.flatMapToDouble(OptionalDouble::stream)  
        结果
        可选值为 DoubleStream
        从以下版本开始:
        9
      • orElse

        public double orElse​(double other)
        如果存在值,则返回值,否则返回 other
        参数
        other - 如果没有值,则返回的值
        结果
        该值,如果存在,否则为 other
      • orElseGet

        public double orElseGet​(DoubleSupplier supplier)
        如果存在值,则返回值,否则返回由供应函数产生的结果。
        参数
        supplier - 产生要返回的值的供应函数
        结果
        该值(如果存在),否则由供应功能产生的结果
        异常
        NullPointerException - 如果没有值,提供功能是 null
      • orElseThrow

        public <X extends Throwable> double orElseThrow​(Supplier<? extends X> exceptionSupplier)
                                                 throws X extends Throwable
        如果存在值,则返回值,否则将抛出由异常提供函数产生的异常。
        API Note:
        可以使用具有空参数列表的异常构造函数的方法引用作为供应商。 例如, IllegalStateException::new
        参数类型
        X - 要抛出的异常的类型
        参数
        exceptionSupplier - 产生要抛出异常的供应函数
        结果
        价值,如果存在
        异常
        X - 如果没有值
        NullPointerException - 如果没有值,异常提供功能是 null
        X extends Throwable
      • equals

        public boolean equals​(Object obj)
        指示某个其他对象是否等于此OptionalDouble 另一个对象被认为是相等的:
        • 它也是一个OptionalDouble和;
        • 或者;
        • 当前值通过Double.compare() == 0彼此“相等”。
        重写:
        equalsObject
        参数
        obj - 要测试的对象的相等性
        结果
        true如果另一个对象是“等于”这个对象否则 false
        另请参见:
        Object.hashCode()HashMap
      • toString

        public String toString​()
        返回适用于调试的OptionalDouble的非空字符串表示形式。 准确的表示格式是未指定的,可能会在实现和版本之间变化。
        重写:
        toStringObject
        实现要求:
        如果存在值,则结果必须在其结果中包含其字符串表示形式。 空和现在OptionalDouble必须明确区分。
        结果
        该实例的字符串表示形式