List<Integer>
和有什么区别List<? super Integer>
。
哪一个是好的做法,或者我们什么时候应该使用什么?
List<Integer>
是一个List
绑定到一个类型的Integer
。这意味着它可以接收和生产Integer
.
List<? super Integer>
是一个无界 List
的,它接受任何是 的 aInteger
或超类的值Integer
。
第二个选项最好用于PECS原则(PECS代表Producer Extends,Consumer super)。如果您想根据类型添加项目T
而不考虑它的实际类型,这很有用。
有关更多信息,请参阅此处的相关帖子。
最明显的区别是你可以将元素List<Integer>
作为类型取出Integer
,但是当你取出元素时List<? super Integer>
,你只能取出类型Object
。
List<Integer>
是这里的最佳选择。
List<? super AbstractObject>
如果您正在处理多态性,那将是更好的选择。