Genéricos de Java: firma Collections.max () y comparador

Yo entiendo elprincipio de poner y poner para colecciones: si un método toma una colección en la que escribirá un tipo T, el parámetro debe serCollection<? super T>, mientras que si leerá un tipo T, el parámetro debe serCollection<? extends T>.

Pero, ¿podría alguien explicarme elCollections.max() firma:

public static <T> T max(Collection<? extends T> coll,
                    Comparator<? super T> comp)

En particular por qué esComparator<? super T> en lugar deComparator<? extends T> ?

Respuestas a la pregunta(3)

Su respuesta a la pregunta