why java didn't choose this signature <T> Stream <T> Stream.generate (Supplier <? extends T> supplier)
over this one <T> Stream <T> Stream.generate (Supplier <T> supplier)
?
I mean the below example (doesn't compile) is correct as a supplier of strings is also valid in a stream of charsequences no ?
Supplier <String> constantHello = () -> "Hello";
long count = Stream.<CharSequence>generate(constantHello).count();
It's a bug. See https://bugs.openjdk.java.net/browse/JDK-8132097
It has been corrected in java 9. As you can see here, the method declaration is now
static <T> Stream<T> generate(Supplier<? extends T> s)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With