RFR: 8356439: Rename JavaLangAccess::*NoRepl methods

Roger Riggs rriggs at openjdk.org
Tue Jul 29 14:26:56 UTC 2025


On Mon, 21 Jul 2025 12:10:51 GMT, Volkan Yazici <vyazici at openjdk.org> wrote:

> `NoRepl`-suffixed `String` methods denote methods that do not replace invalid characters, but throw `CharacterCodingException` on encounter. This behavior cannot easily be derived from the method footprints, has been a source of confusion for maintainers, and is not uniformly adopted, e.g., `newStringUTF8NoRepl()` and `getBytesUTF8NoRepl()` does *not* throw `CCE`. This PR removes `NoRepl` suffix from method names and consistently uses `throws CCE` in method footprints. (b4845109e18 passes `tier1,2`.)

src/java.base/share/classes/java/lang/String.java line 571:

> 569:     }
> 570: 
> 571:     private static String utf8ThrowingIae(byte[] bytes, int offset, int length) {

Iae should be all-caps. `IAE`

src/java.base/share/classes/java/lang/String.java line 579:

> 577:     }
> 578: 
> 579:     private static IllegalArgumentException cce2iae(CharacterCodingException cce) {

More readable would be "cceToIAE"
But this whole construct is suspect because of the contortions needed.

src/java.base/share/classes/java/lang/String.java line 1289:

> 1287:     }
> 1288: 
> 1289:     private static void throwMalformed(byte[] val) throws MalformedInputException {

It is unnecessary to add add @throws of RuntimeExceptions, conventionally they are omitted as clutter and any RuntimeException can be thrown at any time.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/26413#discussion_r2237974608
PR Review Comment: https://git.openjdk.org/jdk/pull/26413#discussion_r2239826290
PR Review Comment: https://git.openjdk.org/jdk/pull/26413#discussion_r2239865577


More information about the core-libs-dev mailing list