Подтвердить что ты не робот

<T extends Object & E> vs <T extends E>

Подпись java.util.Collections.max выглядит следующим образом:

public static < T расширяет Object и Comparable <? супер T → T max (коллекция коллекции);

Из того, что я понимаю, это в основном означает, что T должен быть как java.lang.Object, так и java.lang.Comparable <? super T " > ,

Однако, поскольку каждый java.lang.Comparable также является java.lang.Object, в чем разница между подписью выше и ниже?

public static < T extends Comparable <? супер T → T max (коллекция коллекции);

4b9b3361

Ответ 1

Чтобы сохранить двоичную совместимость: он полностью описан здесь. Вторая подпись фактически изменяет тип возврата метода на Comparable и теряет общность возврата Object. Оригинальная подпись сохраняет оба.