我理解集合的获取和放置原则:如果一个方法接受将要写入类型 T 的集合,那么参数必须是Collection<? super T>
, 如果它将从中读取类型 T, 参数必须是Collection<? extends T>
。
但是,可以有人解释一下Collections.max()
签名吗?
public static <T> T max(Collection<? extends T> coll,
Comparator<? super T> comp)
特别是为什么是
Comparator<? super T>
而不是 Comparator<? extends T>
?