Использование 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).