List<Integer>和List<? super Integer>之间的区别

5
什么是List<Integer>List<? super Integer>之间的区别?
哪一个更好,或在什么情况下我们应该使用它们?

在这种情况下,super 起作用吗? - Marco Forberg
@Marco Forberg,是的!这取决于你想要实现什么。 - Buhake Sindi
可能是 https://dev59.com/HW865IYBdhLWcg3wYNdS 的重复问题。 - MarioDS
1
请看 https://dev59.com/7nE85IYBdhLWcg3wikK- - denis.solonenko
谢谢!我必须改进我的搜索机制以查找重复项 ;) - Amby
3个回答

5
List<Integer> 是一个 List,它被限制在类型 Integer 上。这意味着它可以接收和产生 IntegerList<? super Integer> 是一个无限制的 List,它接受任何值,这些值是 IntegerInteger 的超类。
第二个选项最好使用 "PECS 原则"("PECS" 代表 "Producer Extends, Consumer super")。如果你想添加基于类型 T 的项目,而不考虑它的实际类型,这将非常有用。
更多信息请参见相关帖子here

0

List<Integer> 是这里最好的选择。

如果你正在处理多态性,List<? super AbstractObject> 将是更好的选择。


0
最明显的区别是,当你从类型为List<Integer>的列表中获取元素时,你可以得到类型为Integer的元素,但是当你从类型为List<? super Integer>的列表中获取元素时,你只能得到类型为Object的元素。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接