RFR 8132097: Stream.generate should use a covariant Supplier as parameter
Paul Sandoz
paul.sandoz at oracle.com
Wed Nov 9 00:43:52 UTC 2016
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