APIdia Launch Partner
Top Description Fields Constructors Methods
java.time.temporal

public final Class ValueRange

extends Object
implements Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable
Imports
java.io.IOException, .InvalidObjectException, .ObjectInputStream, .Serializable, java.time.DateTimeException

The range of valid values for a date-time field.

All TemporalField instances have a valid range of values. For example, the ISO day-of-month runs from 1 to somewhere between 28 and 31. This class captures that valid range.

It is important to be aware of the limitations of this class. Only the minimum and maximum values are provided. It is possible for there to be invalid values within the outer range. For example, a weird field may have valid values of 1, 2, 4, 6, 7, thus have a range of '1 - 7', despite the fact that values 3 and 5 are invalid.

Instances of this class are not tied to a specific field.

Implementation Specification

This class is immutable and thread-safe.

Since
1.8

Field Summary

Modifier and TypeField and Description
private final long
private final long
private final long
private final long
private static final long
serialVersionUID

Serialization version.

Constructor Summary

AccessConstructor and Description
private
ValueRange(long
the smallest minimum value
minSmallest
,
long
the largest minimum value
minLargest
,
long
the smallest minimum value
maxSmallest
,
long
the largest minimum value
maxLargest
)

Restrictive constructor.

Method Summary

Modifier and TypeMethod and Description
public int

Returns:

the value that was passed in
checkValidIntValue
(long
the value to check
value
,
TemporalField
the field being checked, may be null
field
)

Checks that the specified value is valid and fits in an int.

public long

Returns:

the value that was passed in
checkValidValue
(long
the value to check
value
,
TemporalField
the field being checked, may be null
field
)

Checks that the specified value is valid.

public boolean

Returns:

true if this is equal to the other range
equals
(Object
the object to check, null returns false
obj
)

Overrides java.lang.Object.equals.

Checks if this range is equal to another range.

private String
public long

Returns:

the largest possible minimum value for this field
getLargestMinimum
()

Gets the largest possible minimum value that the field can take.

public long

Returns:

the maximum value for this field
getMaximum
()

Gets the maximum value that the field can take.

public long

Returns:

the minimum value for this field
getMinimum
()

Gets the minimum value that the field can take.

public long

Returns:

the smallest possible maximum value for this field
getSmallestMaximum
()

Gets the smallest possible maximum value that the field can take.

public int

Returns:

a suitable hash code
hashCode
()

Overrides java.lang.Object.hashCode.

A hash code for this range.

public boolean

Returns:

true if the set of values is fixed
isFixed
()

Is the value range fixed and fully known.

public boolean

Returns:

true if a valid value always fits in an int
isIntValue
()

Checks if all values in the range fit in an int.

public boolean

Returns:

true if the value is valid and fits in an int
isValidIntValue
(long
the value to check
value
)

Checks if the value is within the valid range and that all values in the range fit in an int.

public boolean

Returns:

true if the value is valid
isValidValue
(long
the value to check
value
)

Checks if the value is within the valid range.

public static ValueRange

Returns:

the ValueRange for min, max, not null
of
(long
the minimum value
min
,
long
the maximum value
max
)

Obtains a fixed value range.

public static ValueRange

Returns:

the ValueRange for min, smallest max, largest max, not null
of
(long
the minimum value
min
,
long
the smallest maximum value
maxSmallest
,
long
the largest maximum value
maxLargest
)

Obtains a variable value range.

public static ValueRange

Returns:

the ValueRange for smallest min, largest min, smallest max, largest max, not null
of
(long
the smallest minimum value
minSmallest
,
long
the largest minimum value
minLargest
,
long
the smallest maximum value
maxSmallest
,
long
the largest maximum value
maxLargest
)

Obtains a fully variable value range.

private void
readObject(ObjectInputStream
the stream to read
s
)

Restore the state of an ValueRange from the stream.

public String

Returns:

a string representation of this range, not null
toString
()

Overrides java.lang.Object.toString.

Outputs this range as a String.

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

maxLargestback to summary
private final long maxLargest
maxSmallestback to summary
private final long maxSmallest
minLargestback to summary
private final long minLargest
minSmallestback to summary
private final long minSmallest
serialVersionUIDback to summary
private static final long serialVersionUID

Serialization version.

Annotations
@Serial

Constructor Detail

ValueRangeback to summary
private ValueRange(long minSmallest, long minLargest, long maxSmallest, long maxLargest)

Restrictive constructor.

Parameters
minSmallest:long

the smallest minimum value

minLargest:long

the largest minimum value

maxSmallest:long

the smallest minimum value

maxLargest:long

the largest minimum value

Method Detail

checkValidIntValueback to summary
public int checkValidIntValue(long value, TemporalField field)

Checks that the specified value is valid and fits in an int.

This validates that the value is within the valid range of values and that all valid values are within the bounds of an int. The field is only used to improve the error message.

Parameters
value:long

the value to check

field:TemporalField

the field being checked, may be null

Returns:int

the value that was passed in

See Also
isValidIntValue(long)
checkValidValueback to summary
public long checkValidValue(long value, TemporalField field)

Checks that the specified value is valid.

This validates that the value is within the valid range of values. The field is only used to improve the error message.

Parameters
value:long

the value to check

field:TemporalField

the field being checked, may be null

Returns:long

the value that was passed in

See Also
isValidValue(long)
equalsback to summary
public boolean equals(Object obj)

Overrides java.lang.Object.equals.

Checks if this range is equal to another range.

The comparison is based on the four values, minimum, largest minimum, smallest maximum and maximum. Only objects of type ValueRange are compared, other types return false.

Parameters
obj:Object

the object to check, null returns false

Returns:boolean

true if this is equal to the other range

Annotations
@Override
genInvalidFieldMessageback to summary
private String genInvalidFieldMessage(TemporalField field, long value)
getLargestMinimumback to summary
public long getLargestMinimum()

Gets the largest possible minimum value that the field can take.

For example, the ISO day-of-month always starts at 1. The largest minimum is therefore 1.

Returns:long

the largest possible minimum value for this field

getMaximumback to summary
public long getMaximum()

Gets the maximum value that the field can take.

For example, the ISO day-of-month runs to between 28 and 31 days. The maximum is therefore 31.

Returns:long

the maximum value for this field

getMinimumback to summary
public long getMinimum()

Gets the minimum value that the field can take.

For example, the ISO day-of-month always starts at 1. The minimum is therefore 1.

Returns:long

the minimum value for this field

getSmallestMaximumback to summary
public long getSmallestMaximum()

Gets the smallest possible maximum value that the field can take.

For example, the ISO day-of-month runs to between 28 and 31 days. The smallest maximum is therefore 28.

Returns:long

the smallest possible maximum value for this field

hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

A hash code for this range.

Returns:int

a suitable hash code

Annotations
@Override
isFixedback to summary
public boolean isFixed()

Is the value range fixed and fully known.

For example, the ISO day-of-month runs from 1 to between 28 and 31. Since there is uncertainty about the maximum value, the range is not fixed. However, for the month of January, the range is always 1 to 31, thus it is fixed.

Returns:boolean

true if the set of values is fixed

isIntValueback to summary
public boolean isIntValue()

Checks if all values in the range fit in an int.

This checks that all valid values are within the bounds of an int.

For example, the ISO month-of-year has values from 1 to 12, which fits in an int. By comparison, ISO nano-of-day runs from 1 to 86,400,000,000,000 which does not fit in an int.

This implementation uses getMinimum() and getMaximum().

Returns:boolean

true if a valid value always fits in an int

isValidIntValueback to summary
public boolean isValidIntValue(long value)

Checks if the value is within the valid range and that all values in the range fit in an int.

This method combines isIntValue() and isValidValue(long).

Parameters
value:long

the value to check

Returns:boolean

true if the value is valid and fits in an int

isValidValueback to summary
public boolean isValidValue(long value)

Checks if the value is within the valid range.

This checks that the value is within the stored range of values.

Parameters
value:long

the value to check

Returns:boolean

true if the value is valid

ofback to summary
public static ValueRange of(long min, long max)

Obtains a fixed value range.

This factory obtains a range where the minimum and maximum values are fixed. For example, the ISO month-of-year always runs from 1 to 12.

Parameters
min:long

the minimum value

max:long

the maximum value

Returns:ValueRange

the ValueRange for min, max, not null

Exceptions
IllegalArgumentException:
if the minimum is greater than the maximum
ofback to summary
public static ValueRange of(long min, long maxSmallest, long maxLargest)

Obtains a variable value range.

This factory obtains a range where the minimum value is fixed and the maximum value may vary. For example, the ISO day-of-month always starts at 1, but ends between 28 and 31.

Parameters
min:long

the minimum value

maxSmallest:long

the smallest maximum value

maxLargest:long

the largest maximum value

Returns:ValueRange

the ValueRange for min, smallest max, largest max, not null

Exceptions
IllegalArgumentException:
if the minimum is greater than the smallest maximum, or the smallest maximum is greater than the largest maximum
ofback to summary
public static ValueRange of(long minSmallest, long minLargest, long maxSmallest, long maxLargest)

Obtains a fully variable value range.

This factory obtains a range where both the minimum and maximum value may vary.

Parameters
minSmallest:long

the smallest minimum value

minLargest:long

the largest minimum value

maxSmallest:long

the smallest maximum value

maxLargest:long

the largest maximum value

Returns:ValueRange

the ValueRange for smallest min, largest min, smallest max, largest max, not null

Exceptions
IllegalArgumentException:
if the smallest minimum is greater than the smallest maximum, or the smallest maximum is greater than the largest maximum, or the largest minimum is greater than the largest maximum, or the smallest minimum is greater than the largest minimum
readObjectback to summary
private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException, InvalidObjectException

Restore the state of an ValueRange from the stream. Check that the values are valid.

Parameters
s:ObjectInputStream

the stream to read

Annotations
@Serial
Exceptions
IOException:
if an I/O error occurs
ClassNotFoundException:
if a class cannot be resolved
InvalidObjectException:
if the smallest minimum is greater than the smallest maximum, or the smallest maximum is greater than the largest maximum or the largest minimum is greater than the largest maximum
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Outputs this range as a String.

The format will be '{min}/{largestMin} - {smallestMax}/{max}', where the largestMin or smallestMax sections may be omitted, together with associated slash, if they are the same as the min or max.

Returns:String

a string representation of this range, not null

Annotations
@Override