2013-05-07 2 views
1

В чем разница между List<Integer> и List<? super Integer>.Разница между списком <Integer> и списком <? super Integer>

Какой из них является хорошей практикой или когда мы должны использовать что?

+0

В этом случае работает 'super'? –

+0

@ Марко Форберг, да! В зависимости от того, чего вы хотите достичь. –

+0

Возможный дубликат http://stackoverflow.com/q/3847162/1313143 – MarioDS

ответ

3

List<Integer> является List что ограничена к типу Integer. Это означает, что он может получать и производить Integer.

List<? super Integer> является неограниченным List, который принимает любое значение, которое является Integer или суперкласс Integer.

2-й вариант лучше всего использовать на ПЕСГ Принцип (PECS стенды для Producer Расширяет, потребительских супер). Это полезно, если вы хотите добавить элементы на основе типа T, независимо от его фактического типа.

Дополнительную информацию см. В соответствующем сообщении here.

0

List<Integer> это лучший вариант здесь.

List<? super AbstractObject> будет лучшим вариантом, если вы имеете дело с полиморфизмом.

0

Наиболее очевидная разница в том, что вы можете получить элементы из List<Integer> как тип Integer, но когда вы получаете элементы из List<? super Integer>, вы можете получить только тип Object.

Смежные вопросы