В Java класс Collections содержит следующий метод:
public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> c)
Его подпись хорошо известна своим расширенным использованием дженериков, настолько, что упоминается в Java в двух словах и в официальном Учебном пособии Sun Generics.
Однако я не смог найти убедительного ответа на следующий вопрос:
Почему формальный параметр типа Collection<? extends T>, скорее
чем Collection<T>? Какая дополнительная польза?