模块 java.base
 java.util

类 OptionalLong

java.lang.Object
java.util.OptionalLong

public final class OptionalLong extends Object
可能包含也可能不包含 long 值的容器对象。如果存在值,则 isPresent() 返回 true 。如果没有值,则认为该对象emptyisPresent() 返回 false

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

这是一个value-based类;程序员应该将 equal 的实例视为可互换的,并且不应使用实例进行同步,否则可能会发生不可预测的行为。例如,在未来的版本中,同步可能会失败。

API 注意:
OptionalLong 主要用作明确需要表示“无结果”的方法返回类型。类型为 OptionalLong 的变量本身永远不应该是 null ;它应该总是指向一个 OptionalLong 实例。
自从:
1.8
  • 方法总结

    修饰符和类型
    方法
    描述
    static OptionalLong
    返回一个空的 OptionalLong 实例。
    boolean
    equals(Object obj)
    指示某个其他对象是否“等于”此 OptionalLong
    long
    如果存在值,则返回该值,否则抛出 NoSuchElementException
    int
    返回值的哈希码(如果存在),否则如果不存在值则返回 0(零)。
    void
    如果存在值,则使用该值执行给定的操作,否则不执行任何操作。
    void
    ifPresentOrElse(LongConsumer action, Runnable emptyAction)
    如果存在值,则使用该值执行给定的操作,否则执行给定的基于空的操作。
    boolean
    如果值不存在,则返回 true ,否则返回 false
    boolean
    如果存在值,则返回 true ,否则返回 false
    static OptionalLong
    of(long value)
    返回描述给定值的 OptionalLong
    long
    orElse(long other)
    如果存在值,则返回该值,否则返回 other
    long
    如果存在值,则返回该值,否则返回由提供函数生成的结果。
    long
    如果存在值,则返回该值,否则抛出 NoSuchElementException
    <X extends Throwable>
    long
    orElseThrow(Supplier<? extends X> exceptionSupplier)
    如果存在值,则返回该值,否则抛出由异常提供函数产生的异常。
    如果存在值,则返回仅包含该值的顺序 LongStream ,否则返回空的 LongStream
    返回此 OptionalLong 适合调试的非空字符串表示形式。

    在类 java.lang.Object 中声明的方法

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • 方法详情

    • empty

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

      public static OptionalLong  of(long value)
      返回描述给定值的 OptionalLong
      参数:
      value - 描述的值
      返回:
      具有当前值的 OptionalLong
    • getAsLong

      public long getAsLong()
      如果存在值,则返回该值,否则抛出 NoSuchElementException
      API 注意:
      此方法的首选替代方法是 orElseThrow()
      返回:
      这个 OptionalLong 描述的值
      抛出:
      NoSuchElementException - 如果没有值
    • isPresent

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

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

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

      public void ifPresentOrElse(LongConsumer  action, Runnable  emptyAction)
      如果存在值,则使用该值执行给定的操作,否则执行给定的基于空的操作。
      参数:
      action - 要执行的操作,如果存在值
      emptyAction - 如果不存在任何值,则要执行的基于空的操作
      抛出:
      NullPointerException - 如果存在值并且给定的操作是 null ,或者不存在值并且给定的基于空的操作是 null
      自从:
      9
    • stream

      public LongStream  stream()
      如果存在值,则返回仅包含该值的顺序 LongStream ,否则返回空的 LongStream
      API 注意:
      此方法可用于将可选 longs 的 Stream 转换为当前 longs 的 LongStream
      
         Stream<OptionalLong> os = ..
         LongStream s = os.flatMapToLong(OptionalLong::stream)
        
      返回:
      作为 LongStream 的可选值
      自从:
      9
    • orElse

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

      public long orElseGet(LongSupplier  supplier)
      如果存在值,则返回该值,否则返回由提供函数生成的结果。
      参数:
      supplier - 产生要返回的值的提供函数
      返回:
      值(如果存在),否则为提供函数产生的结果
      抛出:
      NullPointerException - 如果没有值存在并且提供函数是 null
    • orElseThrow

      public long orElseThrow()
      如果存在值,则返回该值,否则抛出 NoSuchElementException
      返回:
      这个 OptionalLong 描述的值
      抛出:
      NoSuchElementException - 如果没有值
      自从:
      10
    • orElseThrow

      public <X extends Throwable > long orElseThrow(Supplier <? extends X> exceptionSupplier) throws X
      如果存在值,则返回该值,否则抛出由异常提供函数产生的异常。
      API 注意:
      对具有空参数列表的异常构造函数的方法引用可以用作提供者。例如,IllegalStateException::new
      类型参数:
      X - 要抛出的异常类型
      参数:
      exceptionSupplier - 产生要抛出的异常的提供函数
      返回:
      值,如果存在
      抛出:
      X - 如果没有值
      NullPointerException - 如果没有值存在并且异常提供函数是 null
    • equals

      public boolean equals(Object  obj)
      指示某个其他对象是否“等于”此 OptionalLong 。另一个对象被认为是相等的,如果:
      • 它也是一个 OptionalLong 和;
      • 两个实例都没有值,或者;
      • 当前值通过 == 彼此“相等”。
      重写:
      equals 在类 Object
      参数:
      obj - 要进行相等性测试的对象
      返回:
      true 如果另一个对象“等于”这个对象,否则 false
      参见:
    • hashCode

      public int hashCode()
      返回值的哈希码(如果存在),否则如果不存在值则返回 0(零)。
      重写:
      hashCode 在类 Object
      返回:
      当前值的哈希码值或 0(如果不存在值)
      参见:
    • toString

      public String  toString()
      返回此 OptionalLong 适合调试的非空字符串表示形式。确切的表示格式未指定,并且可能因实现和版本而异。
      重写:
      toString 在类 Object
      实现要求:
      如果存在值,则结果中必须包含其字符串表示形式。空的和现在的 OptionalLong s 必须是明确可区分的。
      返回:
      此实例的字符串表示形式