For Java 8 source code in Stream
class:
public static<T> Stream<T> generate(Supplier<T> s) {
...
}
In Optional
class
public T orElseGet(Supplier<? extends T> other) {
...
}
I already read this post: PECS, but I have some confusison.
Why generate
method parameter(Supplier<T> s
) use non-variance, but orElseGet
method parameter(Supplier<? extends T> other
) use Covariance, how to decide use Covariance or non-variance?