On Fri, 25 Mar 2022 22:51:23 GMT, Naoto Sato <na...@openjdk.org> wrote:
>> Proposing to deprecate the constructors in the `java.util.Locale` class. >> There is already a factory method and a builder to return singletons, so >> there is no need to have constructors anymore unless one purposefully wants >> to create `ill-formed` Locale objects, which is discouraged. We cannot >> terminally deprecate those constructors for the compatibility to serialized >> objects created with older JDKs. Please see the draft CSR for more detail. > > Naoto Sato has updated the pull request incrementally with one additional > commit since the last revision: > > Fixed a build failure src/java.base/share/classes/java/util/Locale.java line 819: > 817: * @since 19 > 818: */ > 819: public static Locale of(String... fields) { Arguably, there should be `Locale.of` overloads taking 0 to 4 arguments, so that it’s not necessary to box the fields in a `String` array. src/java.base/share/classes/java/util/Locale.java line 825: > 823: case 2 -> getInstance(fields[0], "", fields[1], "", null); > 824: case 3 -> getInstance(fields[0], "", fields[1], fields[2], > null); > 825: default -> getInstance(fields[0], fields[3], fields[1], > fields[2], null); This should probably throw `IllegalArgumentException` when more than 4 fields are passed: Suggestion: case 4 -> getInstance(fields[0], fields[3], fields[1], fields[2], null); default -> throw new IllegalArgumentException(/* TODO: message */); ------------- PR: https://git.openjdk.java.net/jdk/pull/7947