List<Integer>
和List<? super Integer>
之间有什么区别?
哪一个是好的做法还是什么时候应该使用什么?
答案 0 :(得分:4)
List<Integer>
是List
,有界类型为Integer
。这意味着它可以接收并生成Integer
。
List<? super Integer>
是一个无界 List
,它接受Integer
或Integer
的超类的任何值。
第二个选项最适用于 PECS 原则( PECS 代表 Producer Extends,Consumer super )。如果您想要根据类型T
添加项目,无论其实际类型如何,这都很有用。
有关详细信息,请参阅相关帖子here。
答案 1 :(得分:0)
List<Integer>
是最好的选择。
List<? super AbstractObject>
会更好。
答案 2 :(得分:0)
最明显的区别是,您可以将List<Integer>
中的元素作为Integer
类型获取,但是当您从List<? super Integer>
中获取元素时,您只能获得类型Object
}。