【发布时间】:2022-01-09 11:19:42
【问题描述】:
Stream 类中的 Java 8 源代码:
public static<T> Stream<T> generate(Supplier<T> s) {
...
}
在Optional 类中
public T orElseGet(Supplier<? extends T> other) {
...
}
我已经阅读了这篇文章:PECS,但我有些困惑。
为什么generate方法参数(Supplier<T> s)使用非方差,而orElseGet方法参数(Supplier<? extends T> other)使用协方差,如何决定使用协方差还是非方差?
【问题讨论】:
-
主要区别在于Optional的情况下,T已经被原来的Optional值固定了。
标签: java generics covariance