RFR: 8305457: Implement java.io.IO

Pavel Rappo prappo at openjdk.org
Tue May 7 11:04:53 UTC 2024


On Tue, 7 May 2024 05:49:58 GMT, Rémi Forax <forax at openjdk.org> wrote:

>> Please review this PR which introduces the `java.io.IO` top-level class and three methods to `java.io.Console` for [Implicitly Declared Classes and Instance Main Methods (Third Preview)].
>> 
>> This PR has been obtained as `git merge --squash` of a now obsolete [draft PR].
>> 
>> [Implicitly Declared Classes and Instance Main Methods (Third Preview)]: https://bugs.openjdk.org/browse/JDK-8323335
>> [draft PR]: https://github.com/openjdk/jdk/pull/18921
>
> src/java.base/share/classes/jdk/internal/io/JdkConsoleImpl.java line 74:
> 
>> 72: 
>> 73:     @Override
>> 74:     public String readln(String prompt) {
> 
> this code can be simplified using an early return (and the body of the try/catch can be reduced so it is more clear which statement can cause the IOException)
> 
>         synchronized (writeLock) {
>             synchronized(readLock) {
>                 if (!prompt.isEmpty()) {
>                     pw.print(prompt);
>                     pw.flush(); // automatic flushing does not cover print
>                 }
>                char[] array;
>                 try {
>                     array = readline(false);
>                 } catch (IOException x) {
>                     throw new IOError(x);
>                 }
>                 if (array != null) {
>                     return new String(array);
>                 }
>             }
>         }
>         return null;

This method started as a copy of `readLine`. In its current form, it's very evident how `readln` differs from `readLine`, and I would leave it this way for now. If the feature is standardised, we could refactor both methods together, as you suggested.

If the `java.io.IO` part of the feature or the feature itself is withdrawn, then we could consider refactoring the existing `readLine`. Does it make sense?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19112#discussion_r1592281687


More information about the core-libs-dev mailing list