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

Martin Buchholz martinrb at google.com
Wed Nov 16 20:22:12 UTC 2016


Looks good to me!

On Tue, Nov 8, 2016 at 4:43 PM, 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;
>              }
>


More information about the core-libs-dev mailing list