<? extends T>是什么意思?
List<? extends Father> list1 = new ArrayList<>();
List<? super Father> list2 = new ArrayList<>();
PECS原则
最后看一下什么是PECS(Producer Extends Consumer Super)原则,已经很好理解了:
- 频繁往外读取内容的,适合用上界Extends。
- 经常往里插入的,适合用下界Super。
所以Supplier的泛型用<? extends T>,因为是返回,即取值。
public T orElseGet(Supplier<? extends T> other) {
return value != null ? value : other.get();
}
参考
Java中<? extends T>和<? super T>的理解# - chenxibobo - 博客园