collect signature

Boaz Nahum boaznahum at gmail.com
Fri Jun 14 05:29:40 PDT 2013


What about:

    interface Collector<T,R> {
        ActualCollector<T, ?, R> getActual();
    }

    /** was Collector */
    interface ActualCollector<T, A, R> extends Collector<T,R> {

        @Final
        @Override
        default ActualCollector<T, A, R> getActual() {
            return this;
        }
    }



Thanks
Boaz



On Fri, Jun 14, 2013 at 1:29 PM, Remi Forax <forax at univ-mlv.fr> wrote:

> On 06/14/2013 12:18 PM, Boaz Nahum wrote:
> > Hi Brian.
> >
> > I guess you already have been asked this trillion times, but,
> > why <I> appears in collect signature ?
> >
> > *<R, I> R collect(Collector<? super T, I, R> collector);*
> >
> > I tried to compile many examples(from Collectors) with:
> >
> > *<R> R collect(Collector<? super T, ?, R> collector);*
> >
> > and it just compiled fine.
> >
> > Thanks
> > Boaz
>
> Good question,
> Collect signature was changed recently, to add a new type parameter (the
> I) and
> we are still discussing about using wildcards, or other design tricks to
> hide this ugly I.
>
> cheers,
> Rémi
>
> >
> >
> >
> > On Fri, Jun 14, 2013 at 2:20 AM, <brian.goetz at oracle.com> wrote:
> >
> >> Changeset: de85a85ab586
> >> Author:    briangoetz
> >> Date:      2013-06-13 19:20 -0400
> >> URL:
> http://hg.openjdk.java.net/lambda/lambda/jdk/rev/de85a85ab586
> >>
> >> Add post-transform functionality to Collector; eliminate
> STRICTLY_MUTATIVE
> >> collector characteristic; restructure existing set of Collectors,
> including
> >> various renamings; add StringJoiner.merge() method; more Collector tests
> >>
> >> ! src/share/classes/java/util/DoubleSummaryStatistics.java
> >> ! src/share/classes/java/util/IntSummaryStatistics.java
> >> ! src/share/classes/java/util/LongSummaryStatistics.java
> >> ! src/share/classes/java/util/Optional.java
> >> ! src/share/classes/java/util/StringJoiner.java
> >> ! src/share/classes/java/util/stream/Collector.java
> >> ! src/share/classes/java/util/stream/Collectors.java
> >> ! src/share/classes/java/util/stream/DelegatingStream.java
> >> ! src/share/classes/java/util/stream/ReduceOps.java
> >> ! src/share/classes/java/util/stream/ReferencePipeline.java
> >> ! src/share/classes/java/util/stream/Stream.java
> >> ! test/java/lang/StringBuilder/AddAllTest.java
> >> ! test/java/util/StringJoiner/BasicTest.java
> >> ! test/java/util/stream/bootlib/java/util/stream/OpTestCase.java
> >> !
> >>
> test/java/util/stream/test/org/openjdk/tests/java/util/FillableStringTest.java
> >> !
> >>
> test/java/util/stream/test/org/openjdk/tests/java/util/stream/GroupByOpTest.java
> >> !
> >>
> test/java/util/stream/test/org/openjdk/tests/java/util/stream/SummaryStatisticsTest.java
> >> !
> >>
> test/java/util/stream/test/org/openjdk/tests/java/util/stream/TabulatorsTest.java
> >> ! test/jdk/lambda/MethodReferenceTestInstanceMethod.java
> >> ! test/jdk/lambda/separate/TestHarness.java
> >>
> >>
> >>
>
>
>


More information about the lambda-dev mailing list