RFR: JDK-8319123 : Implementation of JEP-461: Stream Gatherers (Preview) [v3]

Viktor Klang vklang at openjdk.org
Fri Nov 10 21:55:12 UTC 2023


On Fri, 10 Nov 2023 16:48:34 GMT, Alan Bateman <alanb at openjdk.org> wrote:

>> Viktor Klang has updated the pull request incrementally with two additional commits since the last revision:
>> 
>>  - Multiple improvements to Gatherer and Gatherers javadoc and restructuring of Gatherers.java to put public at the top of the file.
>>  - Augmenting Gatherer tests to include default implementation in Stream
>
> src/java.base/share/classes/java/util/stream/Gatherer.java line 91:
> 
>> 89:  *
>> 90:  * <p>In addition to the predefined implementations in {@link Gatherers}, the
>> 91:  * static factory methods {@code of(...)} and {@code ofSequential(...)}
> 
> I assume both of these could be links.

Unfortunately they can't, since they are both overloaded and here we're talking about them "generically".

> src/java.base/share/classes/java/util/stream/Gatherer.java line 494:
> 
>> 492:          *          never return false again for the same instance.
>> 493:          *
>> 494:          * <p>By default this method returns {@code false}.
> 
> The text that specifies the default implementation can be in implSpec rather than the apiNote. I agree that false is the only sane default here.

Yeah, should likely be implSpec. Will change.

> src/java.base/share/classes/java/util/stream/Gatherer.java line 528:
> 
>> 526:          *         {@code false} if not
>> 527:          */
>> 528:         boolean integrate(A state, T element, Downstream<? super R> downstream);
> 
> Integrator is silent on nulls and whether NPE is thrown.

No sure what it should say regarding nulls. The `initializer` might return `null` in which case `state` would be `null`.  `element` can be `null` if the stream contains `null`s. `Downstream` should never be null.

Should the Javadoc say something about how RuntimeExceptions thrown must be interpreted by the caller? 🤔

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16420#discussion_r1389957565
PR Review Comment: https://git.openjdk.org/jdk/pull/16420#discussion_r1389956115
PR Review Comment: https://git.openjdk.org/jdk/pull/16420#discussion_r1389957272


More information about the core-libs-dev mailing list