任何机构都可以解释这个通用向量Vector<? super Object> list = ...
以及在哪里使用它吗?
4 回答
它与
Vector<Object> list
通常“?super Type”表示可以添加Type类型的超类型
Object 是 Java 中的最高级别,因此没有超类型,所以 ? 不需要超级
如果它是
Vector<? extends Object> list
那么这意味着您可以添加任何作为 Object 子类的对象。这是 Java 中的每个对象,因此它与
Vector<Object> list
还要考虑 List 而不是 Vector,如果您希望它是线程安全的,则将其包装在 Collections.synchronizedList(...)
在这里,您正在定义未知对象的下限?
。所以Vector<? super Object
只能包含Object
和 的任何超类Object
。但是由于Object
没有超类,所以没有意义。它的行为与Vector<Object>
.
请参阅此示例。
与之对应的是上限 Vector<? extends Object>
,您可以在其中添加任何扩展的对象Object
。
在大多数情况下,您应该能够避免使用Object
泛型类型。
<? super Object>
这是荒谬的,因为没有超类型的 Object,但它是允许的,它只包含 Object 类型。http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html
这样的列表只能包含类型的元素,Object
因为 Object 没有任何超类型,类似于使用不可变类(如 String)的扩展,其中此类集合只能包含字符串。