RFR JDK-8003258: BufferedReader.lines()

Remi Forax forax at univ-mlv.fr
Sat Apr 27 08:35:16 UTC 2013


On 04/27/2013 01:46 AM, Stephen Colebourne wrote:
> I would suggest a new line at the end of each file.
>
> Plus there is some very stylised formatting in terms of making things
> align vertically that I wouldn't do personally, and seem to waste a
> lot of screen space. Plus a single line which should be three lines.
> public void close() { closed = true; }
>
> "Since the {@code Stream} does not necessary consume all lines"
> should be
> "Since the {@code Stream} does not necessarily consume all lines"
>
> I did a double take when I saw:
>   try {
>    return nextLine;
>   } finally {
>    nextLine = null;
>   }
> Certainly an "interesting" approach to returning and clearing.
>
> Stephen

It's a known trick,
but javac is not smart enough to *not* generate an exception table,
so the resulting bytecode is equivalent to:

   String tmp;
   try {
     tmp = nextLine;
   } catch(Throwable t) {
     nextLine = null;
     throw t;
   }
   nextLine = null;
   return tmp;

not something beautiful.

Rémi


>
>
> On 26 April 2013 22:59, Henry Jen <henry.jen at oracle.com> wrote:
>> Hi,
>>
>> Please review webrev at
>>
>> http://cr.openjdk.java.net/~henryjen/ccc/8003258.1/webrev/
>>
>> It adds a method to BufferedReader.
>>
>> public Stream<String> lines() {}
>>
>> A class java.io.UncheckedIOException is also added as a general approach
>> for wrapping up an IOException to be unchecked.
>>
>> Cheers,
>> Henry




More information about the core-libs-dev mailing list