On Wed, 26 Mar 2025 21:41:02 GMT, Naoto Sato <na...@openjdk.org> wrote:
>> Please review this PR which clarifies the behavior for integer and fraction >> limits in NumberFormat and implementing classes. An associated CSR is filed. >> >> There have been a few bugs submitted which indicate a misconception that >> these limits impact parsing. The actual behavior is that these limits only >> affect formatting. The specification is vague regarding this, and can be >> explicitly updated to eliminate confusion. As the implementing classes are >> updated to use `inheritDoc`, some shuffling around in the method specs are >> included in this change as well. >> >> Alternatively I considered making this change as implementation specific to >> DecimalFormat and CompactNumberFormat only. (i.e. leave flexibility for >> other NumberFormat subclasses to define their own behavior on whether the >> limits affect parsing.) I am open to this option as well, but initially >> decided against it as >> 1) Unlike formatting, it seems like a rare use case that you would want to >> suppress the range of digits of accepted during parsing. >> `setParseIntegerOnly()` already provides functionality to toggle between >> integer and fraction parsing. >> 2) The limits affecting formatting only has been the long-standing behavior >> for all the subclasses of NumberFormat provided by the OpenJDK reference >> implementation. > > src/java.base/share/classes/java/text/DecimalFormat.java line 4047: > >> 4045: * #setMaximumIntegerDigits(int)} or {@link #applyPattern(String)}. >> 4046: * See the {@link ##patterns Pattern Section} for comprehensive >> rules regarding >> 4047: * maximum integer digits in patterns. > > This part only exists in this method and other getter methods do not have > one. Either removing this (as this is explained in the class description), or > add it to all other getters would be consistent ( the former is better IMO). That commentary is only in this method because of the non-obvious behavior for the maximum integer digits. (The pattern does not change the `maximumIntegerDigits`). Since not all users may read that section in the class description, that is why this method has the explicit call-out, so I think it may be beneficial to keep this wording. I am fine either way, if you don't think it's worth it, I'll remove. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24265#discussion_r2015068415