hg: lambda/lambda/jdk: Add BufferedReader.lines

Zhong Yu zhong.j.yu at gmail.com
Sun Nov 11 19:23:44 PST 2012


On Sun, Nov 11, 2012 at 5:35 PM, Ricky Clarkson
<ricky.clarkson at gmail.com> wrote:
> BufferedReader.lines() seems like the kind of method likely to cause
> resource leaks; if I use it and create a Stream<String> and then return
> that to my caller, I can't close the BufferedReader in the same place I
> create it, and my caller cannot close the BufferedReader either.

Maybe you can return a stream + a postmortem action which the caller
must invoke after it's absolutely sure that the stream is no longer
used.

    public ToClose<Stream<String>> foo(){ .... }

    public interface ToClose<T> extends AutoCloseable
        T value();
        void close();

It sucks, of course.
>
> On Sun, Nov 11, 2012 at 8:24 PM, Arne Siegel
> <v.a.ammodytes at googlemail.com>wrote:
>
>> Hi Brian,
>>
>> nice utility function, though I don't think you got the if statement in
>> next() right.
>>
>> @Override
>> public String next() {
>>     if (nextLine == null || hasNext()) {
>>         try {
>>             return nextLine;
>> ...
>>
>> Better keep it simple:
>> ...
>>     if (hasNext()) {
>> ...
>>
>> Arne Siegel
>>
>>
>> On 11 Nov 2012 at 22:50, brian.goetz at oracle.com wrote:
>>
>> > Changeset: 94d64473e8e6
>> > Author:    briangoetz
>> > Date:      2012-11-11 17:44 -0500
>> > URL:       http://hg.openjdk.java.net/lambda/lambda/jdk/rev/94d64473e8e6
>> >
>> > Add BufferedReader.lines
>> >
>> > ! src/share/classes/java/io/BufferedReader.java
>> > ! src/share/classes/java/io/Reader.java
>> > + src/share/classes/java/io/UncheckedIOException.java
>> >
>> >
>>
>>
>>
>>
>


More information about the lambda-dev mailing list