В чем разница между List<Integer>
и List<? super Integer>
.Разница между списком <Integer> и списком <? super Integer>
Какой из них является хорошей практикой или когда мы должны использовать что?
В чем разница между List<Integer>
и List<? super Integer>
.Разница между списком <Integer> и списком <? super Integer>
Какой из них является хорошей практикой или когда мы должны использовать что?
List<Integer>
является List
что ограничена к типу Integer
. Это означает, что он может получать и производить Integer
.
List<? super Integer>
является неограниченным List
, который принимает любое значение, которое является Integer
или суперкласс Integer
.
2-й вариант лучше всего использовать на ПЕСГ Принцип (PECS стенды для Producer Расширяет, потребительских супер). Это полезно, если вы хотите добавить элементы на основе типа T
, независимо от его фактического типа.
Дополнительную информацию см. В соответствующем сообщении here.
List<Integer>
это лучший вариант здесь.
List<? super AbstractObject>
будет лучшим вариантом, если вы имеете дело с полиморфизмом.
Наиболее очевидная разница в том, что вы можете получить элементы из List<Integer>
как тип Integer
, но когда вы получаете элементы из List<? super Integer>
, вы можете получить только тип Object
.
В этом случае работает 'super'? –
@ Марко Форберг, да! В зависимости от того, чего вы хотите достичь. –
Возможный дубликат http://stackoverflow.com/q/3847162/1313143 – MarioDS