Я понимаю получить и поместить принцип для коллекций: если метод берет в коллекции, что он будет писать тип T to, параметр должен быть 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>
?