RFR 8132097: Stream.generate should use a covariant Supplier as parameter

Remi Forax forax at univ-mlv.fr
Wed Nov 9 06:35:43 UTC 2016


Good for me !

Remi 

On November 9, 2016 1:43:52 AM GMT+01:00, Paul Sandoz <paul.sandoz at oracle.com> wrote:
>Hi
>
>Please review this compatible fix to Stream.generate to accept a
>covariant Supplier.
>
>Paul.
>
>diff -r 3e3ca9800322
>src/java.base/share/classes/java/util/stream/Stream.java
>--- a/src/java.base/share/classes/java/util/stream/Stream.java	Tue Nov
>08 15:37:20 2016 -0800
>+++ b/src/java.base/share/classes/java/util/stream/Stream.java	Tue Nov
>08 16:36:51 2016 -0800
>@@ -1327,7 +1327,7 @@
>      * @param s the {@code Supplier} of generated elements
>      * @return a new infinite sequential unordered {@code Stream}
>      */
>-    public static<T> Stream<T> generate(Supplier<T> s) {
>+    public static<T> Stream<T> generate(Supplier<? extends T> s) {
>         Objects.requireNonNull(s);
>         return StreamSupport.stream(
>new
>StreamSpliterators.InfiniteSupplyingSpliterator.OfRef<>(Long.MAX_VALUE,
>s), false);
>diff -r 3e3ca9800322
>src/java.base/share/classes/java/util/stream/StreamSpliterators.java
>---
>a/src/java.base/share/classes/java/util/stream/StreamSpliterators.java	Tue
>Nov 08 15:37:20 2016 -0800
>+++
>b/src/java.base/share/classes/java/util/stream/StreamSpliterators.java	Tue
>Nov 08 16:36:51 2016 -0800
>@@ -1346,9 +1346,9 @@
>         }
>
>  static final class OfRef<T> extends InfiniteSupplyingSpliterator<T> {
>-            final Supplier<T> s;
>+            final Supplier<? extends T> s;
>
>-            OfRef(long size, Supplier<T> s) {
>+            OfRef(long size, Supplier<? extends T> s) {
>                 super(size);
>                 this.s = s;
>             }

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.


More information about the core-libs-dev mailing list