Module java.base

Class ValueRange

java.lang.Object
java.time.temporal.ValueRange
所有已实现的接口:
Serializable

public final class ValueRange extends Object implements Serializable
日期时间字段的有效值范围。

所有TemporalField实例都有有效值范围。例如,ISO日期的月份从1到28到31之间。该类捕获了有效范围。

重要的是要意识到这个类的限制。只提供了最小值和最大值。在外部范围内可能存在无效值。例如,一个奇怪的字段可能有值1、2、4、6、7,因此范围为'1 - 7',尽管值3和5是无效的。

此类的实例不与特定字段绑定。

实现要求:
此类是不可变的且线程安全的。
自从:
1.8
参见:
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    checkValidIntValue(long value, TemporalField field)
    检查指定值是否有效并适合于int
    long
    checkValidValue(long value, TemporalField field)
    检查指定值是否有效。
    boolean
    equals(Object obj)
    检查此范围是否等于另一个范围。
    long
    获取字段可以取的最大可能最小值。
    long
    获取字段可以取的最大值。
    long
    获取字段可以取的最小值。
    long
    获取字段可以取的最小可能最大值。
    int
    此范围的哈希码。
    boolean
    值范围是否固定且完全已知。
    boolean
    检查范围内的所有值是否适合于int
    boolean
    isValidIntValue(long value)
    检查值是否在有效范围内,并且范围内的所有值是否适合于int
    boolean
    isValidValue(long value)
    检查值是否在有效范围内。
    static ValueRange
    of(long min, long max)
    获取固定值范围。
    static ValueRange
    of(long min, long maxSmallest, long maxLargest)
    获取可变值范围。
    static ValueRange
    of(long minSmallest, long minLargest, long maxSmallest, long maxLargest)
    获取完全可变值范围。
    将此范围输出为String

    Methods declared in class java.lang.Object

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

    • of

      public static ValueRange of(long min, long max)
      获取固定值范围。

      此工厂获取最小值和最大值固定的范围。例如,ISO年份始终从1到12。

      参数:
      min - 最小值
      max - 最大值
      返回:
      min、max的ValueRange,不为null
      抛出:
      IllegalArgumentException - 如果最小值大于最大值
    • of

      public static ValueRange of(long min, long maxSmallest, long maxLargest)
      获取可变值范围。

      此工厂获取最小值固定且最大值可能变化的范围。例如,ISO日期的日始终从1开始,但结束在28到31之间。

      参数:
      min - 最小值
      maxSmallest - 最小的最大值
      maxLargest - 最大的最大值
      返回:
      min、最小max、最大max的ValueRange,不为null
      抛出:
      IllegalArgumentException - 如果最小值大于最小最大值,或最小最大值大于最大最大值
    • of

      public static ValueRange of(long minSmallest, long minLargest, long maxSmallest, long maxLargest)
      获取完全可变值范围。

      此工厂获取最小值和最大值都可能变化的范围。

      参数:
      minSmallest - 最小的最小值
      minLargest - 最大的最小值
      maxSmallest - 最小的最大值
      maxLargest - 最大的最大值
      返回:
      最小最小值、最大最小值、最小最大值、最大最大值的ValueRange,不为null
      抛出:
      IllegalArgumentException - 如果最小最小值大于最小最大值,或最小最大值大于最大最大值,或最大最小值大于最大最大值,或最小最小值大于最大最小值
    • isFixed

      public boolean isFixed()
      值范围是否固定且完全已知。

      例如,ISO日期的日从1到28到31之间。由于最大值存在不确定性,因此范围不是固定的。然而,对于一月份,范围始终是1到31,因此是固定的。

      返回:
      如果值集合是固定的,则为true
    • getMinimum

      public long getMinimum()
      获取字段可以取的最小值。

      例如,ISO日期的日始终从1开始。因此最小值为1。

      返回:
      此字段的最小值
    • getLargestMinimum

      public long getLargestMinimum()
      获取字段可以取的最大可能最小值。

      例如,ISO日期的日始终从1开始。因此最大可能最小值为1。

      返回:
      此字段的最大可能最小值
    • getSmallestMaximum

      public long getSmallestMaximum()
      获取字段可以取的最小可能最大值。

      例如,ISO日期的日从28到31天。因此最小可能最大值为28。

      返回:
      此字段的最小可能最大值
    • getMaximum

      public long getMaximum()
      获取字段可以取的最大值。

      例如,ISO日期的日从28到31天。因此最大值为31。

      返回:
      此字段的最大值
    • isIntValue

      public boolean isIntValue()
      检查范围内的所有值是否适合于int

      这将检查所有有效值是否在int的范围内。

      例如,ISO年份的值从1到12,适合于int。相比之下,ISO一天的纳秒从1到86,400,000,000,000,不适合于int

      此实现使用getMinimum()getMaximum()

      返回:
      如果有效值始终适合于int,则为true
    • isValidValue

      public boolean isValidValue(long value)
      检查值是否在有效范围内。

      这将检查值是否在存储的值范围内。

      参数:
      value - 要检查的值
      返回:
      如果值有效,则为true
    • isValidIntValue

      public boolean isValidIntValue(long value)
      检查值是否在有效范围内,并且范围内的所有值是否适合于int

      此方法结合了isIntValue()isValidValue(long)

      参数:
      value - 要检查的值
      返回:
      如果值有效且适合于int,则为true
    • checkValidValue

      public long checkValidValue(long value, TemporalField field)
      检查指定值是否有效。

      这将验证值是否在有效值范围内。该字段仅用于改进错误消息。

      参数:
      value - 要检查的值
      field - 正在检查的字段,可能为null
      返回:
      传入的值
      参见:
    • checkValidIntValue

      public int checkValidIntValue(long value, TemporalField field)
      检查指定值是否有效并适合于int

      这将验证值是否在有效值范围内,并且所有有效值是否在int的范围内。该字段仅用于改进错误消息。

      参数:
      value - 要检查的值
      field - 正在检查的字段,可能为null
      返回:
      传入的值
      参见:
    • equals

      public boolean equals(Object obj)
      检查此范围是否等于另一个范围。

      比较基于四个值,最小值、最大最小值、最小最大值和最大值。仅比较ValueRange类型的对象,其他类型返回false。

      覆盖:
      equals 在类 Object
      参数:
      obj - 要检查的对象,null返回false
      返回:
      如果这个等于另一个范围,则为true
      参见:
    • hashCode

      public int hashCode()
      此范围的哈希码。
      覆盖:
      hashCode 在类 Object
      返回:
      适当的哈希码
      参见:
    • toString

      public String toString()
      将此范围输出为String

      格式将是'{min}/{largestMin} - {smallestMax}/{max}',如果largestMin或smallestMax部分与min或max相同,则可能省略,连同相关的斜杠。

      覆盖:
      toString 在类 Object
      返回:
      此范围的字符串表示,不为null