RFR: 8366829: Add constants for the Duration MIN/MAX values [v2]
Stephen Colebourne
scolebourne at openjdk.org
Tue Sep 30 18:54:55 UTC 2025
On Mon, 29 Sep 2025 21:36:35 GMT, Pavel Rappo <prappo at openjdk.org> wrote:
>> We have [recently discussed][] a possibility of adding the `Duration.MIN` and `Duration.MAX` constants. Can we now start implementation? If and when we are in agreement on this PR, I will file a CSR.
>>
>> I drafted a minimal specification and added some tests. I tried to phrase the spec for `Duration.MIN` in a way that makes it clear that `Duration.MIN` is the most negative value and not the least positive.
>>
>> [recently discussed]: https://mail.openjdk.org/pipermail/core-libs-dev/2025-September/151098.html
>
> Pavel Rappo has updated the pull request incrementally with two additional commits since the last revision:
>
> - Update copyright years
>
> Note: any commit hashes below might be outdated due to subsequent
> history rewriting (e.g. git rebase).
>
> + update src/java.base/share/classes/java/time/temporal/ChronoUnit.java due to 9a54ba1d353
> + update test/jdk/java/time/tck/java/time/TCKDuration.java due to 9a54ba1d353
> - Provide @apiNote as suggested
src/java.base/share/classes/java/time/Duration.java line 151:
> 149: * instant}, as doing so will cause overflow. Extreme care should be taken
> 150: * when performing {@code Duration} arithmetic on them, such as adding
> 151: * them to or subtracting them from another duration.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/time/Instant.html#MIN
Suggestion:
* The minimum supported Duration, which is {@code Long.MIN_VALUE} seconds.
*
* @apiNote This constant represents the smallest possible instance of {@code Duration}.
* Since Durations are directed, the smallest possible duration is negative.
* <p>
* The constant is intended to be used as a sentinel value, such as in
* comparisons and tests. Care should be taken when performing arithmetic
* on {@code MIN} as there is a high risk that {@code ArithmeticException}
* will be thrown.
Similar for MAX. But it can repeat the class header comment about being longer than the age of the universe,
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27534#discussion_r2392531493
More information about the core-libs-dev
mailing list