В аргументах типа Java, делает <? расширяется E> средний, строго выделяет подтипы только? или E был бы также достаточен?

В аргументах типа Java, действительно означает строго подтипы только? или E был бы также достаточен?

8
задан polygenelubricants 1 July 2010 в 08:26
поделиться

3 ответа

Да, super и extends дают инклюзивные нижнюю и верхнюю границы соответственно.

Вот цитата из Angelika Langer's Generics FAQ:

Что такое ограниченный подстановочный знак?

Подстановочный знак с верхней границей выглядит как ? extends Type и обозначает семейство всех типов, которые являются подтипами Type , тип Type является included. Тип называется верхней границей.

Подстановочный знак с нижней границей выглядит как ? super Type и обозначает семейство всех типов, которые являются супертипами Type , тип Type является included. Тип называется нижней границей.

6
ответ дан 5 December 2019 в 12:07
поделиться

Это не строго ; E будет достаточно.

7
ответ дан 5 December 2019 в 12:07
поделиться
List<? extends Animal> animalList=new List<Dog>();
List<? extends Animal> animalList=new List<Animal>();

Обе строки компилируются без ошибок. Любая функция, принимающая список в качестве параметра, понимает, что объекты в списке относятся к типу E или подтипу E.

1
ответ дан 5 December 2019 в 12:07
поделиться
Другие вопросы по тегам:

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