On Tue, 27 Jun 2023 07:45:34 GMT, Glavo <[email protected]> wrote:
>> Added a new method `newStringLatin1NoRepl` to the `JavaLangAccess`.
>>
>> Reasons:
>>
>> * Most use cases of `newStringNoRepl` use `ISO_8859_1` as the charset,
>> creating a new shortcut can make writing shorter;
>> * Since all possible values of `byte` are legal Latin-1 characters,
>> `newStringLatin1NoRepl` **will not throw `CharacterCodingException`**, so
>> users can make the compiler happy without using useless try-catch statements.
>
> Glavo has updated the pull request with a new target base due to a merge or a
> rebase. The incremental webrev excludes the unrelated changes brought in by
> the merge/rebase. The pull request contains seven additional commits since
> the last revision:
>
> - Merge branch 'openjdk:master' into latin1-no-repl
> - Merge branch 'openjdk:master' into latin1-no-repl
> - update javadoc
> - clean newStringNoRepl1
> - clean newStringNoRepl1
> - Rename jla to JLA
> - Create new method JavaLangAccess::newStringLatin1NoRepl
On a side note, `NoRepl` means "no replication", implying the passed array is
already trusted. I think you should do something like this instead:
public static String readString(Path path, Charset cs) throws IOException {
Objects.requireNonNull(path);
Objects.requireNonNull(cs);
byte[] ba = readAllBytes(path);
if (path.getClass().getModule() != Object.class.getModule())
return new String(ba, 0, ba.length, cs);
return JLA.newStringNoRepl(ba, cs);
}
-------------
PR Comment: https://git.openjdk.org/jdk/pull/14655#issuecomment-1610485537