-
Bug
-
Resolution: Unresolved
-
P4
-
8
-
None
Stream.iterate() currently has two overloads:
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
static <T> Stream<T> iterate(T seed, UnaryOperator<T> f)
This prevents certain combinations of existing values and unary operators from being used. For example:
UnaryOperator<String> op = s -> s;
Stream<CharSequence> scs = iterate("", op); // error
If the methods' declarations were changed like so:
static <T, S extends T> Stream<T> iterate(S seed, Predicate<? super S> hasNext, UnaryOperator<S> next)
static <T, S extends T> Stream<T> iterate(S seed, UnaryOperator<S> f)
Then the above call to iterate() would no longer result in an error.
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
static <T> Stream<T> iterate(T seed, UnaryOperator<T> f)
This prevents certain combinations of existing values and unary operators from being used. For example:
UnaryOperator<String> op = s -> s;
Stream<CharSequence> scs = iterate("", op); // error
If the methods' declarations were changed like so:
static <T, S extends T> Stream<T> iterate(S seed, Predicate<? super S> hasNext, UnaryOperator<S> next)
static <T, S extends T> Stream<T> iterate(S seed, UnaryOperator<S> f)
Then the above call to iterate() would no longer result in an error.
- relates to
-
JDK-8132097 Stream.generate should use a covariant Supplier as parameter
-
- Resolved
-