@Override
    public ValueRange range(TemporalField field) {
        if (field == YEAR_OF_ERA) {
            return (year <= 0 ? ValueRange.of(1, MAX_VALUE + 1) : ValueRange.of(1, MAX_VALUE));
        }
        return super.range(field);
    }
@ Override public ValueRange range ( TemporalField field ) { if ( field == YEAR_OF_ERA ) { return ( year <= 0 ? ValueRange . of ( 1 , MAX_VALUE + 1 ) : ValueRange . of ( 1 , MAX_VALUE ) ) ; } return super . range ( field ) ; }
Gets the range of valid values for the specified field.
<p>
The range object expresses the minimum and maximum valid values for a field.
This year is used to enhance the accuracy of the returned range.
If it is not possible to return the range, because the field is not supported
or for some other reason, an exception is thrown.
<p>
If the field is a {@link ChronoField} then the query is implemented here.
The {@link #isSupported(TemporalField) supported fields} will return
appropriate range instances.
All other {@code ChronoField} instances will throw a {@code DateTimeException}.
<p>
If the field is not a {@code ChronoField}, then the result of this method
is obtained by invoking {@code TemporalField.rangeRefinedBy(TemporalAccessor)}
passing {@code this} as the argument.
Whether the range can be obtained is determined by the field.

@param field  the field to query the range for, not null
@return the range of valid values for the field, not null
@throws DateTimeException if the range for the field cannot be obtained