Использование super в компараторе в java

Я понимаю, что в

Comparator < ? super T> comp

он возвращает максимальный элемент данной коллекции в соответствии с порядком, индуцированным указанным компаратором. Но я не понимаю цели

super T

может ли кто-нибудь объяснить?

2 ответов


здесь < ? super T> означает дженериков - не сравнение.

это означает, что у вас есть Comparator с общим типом ? super T (то, что выходит супер набранный T), как описано в этой теме

comp - имя переменной (привязка).

так что в основном здесь Comparator < ? super T> это тип и comp это идентификатор (имя переменной), то есть типа Comparator <? super T>


дополнительная информация: Java Generics


термин ? super T означает "неизвестный тип, который является или является суперклассом T", что на языке дженериков означает, что его нижняя граница-T.

эта подпись используется, потому что T может быть присвоена и сравнивается с любой переменной, тип которой является или является суперклассом T. т. е. если компаратор может принять суперкласс T в своем методе compare (), вы можете передать T.

Это следует из мнемоники Печ: "производитель расширяет, потребитель Супер", что означает, что производители вещи должны работать с вещами, которые имеют верхний привязанные ( ? расширяет T) и потребителей (например, реализации компаратора, которые использовать вещи) должны работать с ниже границы ( ? super T).