Зачем в дженериках используется ?, и эквивалентен ли он T/E?

Встретил такую конструкцию Function<? super T, ? extends U>
Никогда не задумывался, зачем нужен ?.
Эквивалентен ли код выше такому коду: Function<E super T, E extends U>.
Если да, то зачем использовать ?.
  • Вопрос задан
  • 576 просмотров
Решения вопроса 1
Beshere
@Beshere
Разработчик
Цитирую примерно Эккеля:

<?> - неограниченная маска, означает "что угодно", в большинстве случаев компилятор не видит разницы между T и <?>.
Без ? вы сможете больше сделать с параметрами, а с ? - принимать более широкий диапазон параметров.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@engineerVadim
? extends U - некоторый тип, который является потомком U, ? super T - некоторый тип, который является предком Т. Ваша схема(так как у Вас написано), как правило применяется: первая часть для приемника, вторая для источника при обработке чего либо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы