2

任何机构都可以解释这个通用向量Vector<? super Object> list = ...以及在哪里使用它吗?

4

4 回答 4

4

它与

Vector<Object> list

通常“?super Type”表示可以添加Type类型的超类型

Object 是 Java 中的最高级别,因此没有超类型,所以 ? 不需要超级

如果它是

Vector<? extends Object> list

那么这意味着您可以添加任何作为 Object 子类的对象。这是 Java 中的每个对象,因此它与

Vector<Object> list

还要考虑 List 而不是 Vector,如果您希望它是线程安全的,则将其包装在 Collections.synchronizedList(...)

于 2012-09-11T12:05:31.310 回答
4

在这里,您正在定义未知对象的下限?。所以Vector<? super Object只能包含Object和 的任何超类Object。但是由于Object没有超类,所以没有意义。它的行为与Vector<Object>.

请参阅此示例

与之对应的是上限 Vector<? extends Object>,您可以在其中添加任何扩展的对象Object

在大多数情况下,您应该能够避免使用Object泛型类型。

于 2012-09-11T12:10:09.583 回答
3

<? super Object>这是荒谬的,因为没有超类型的 Object,但它是允许的,它只包含 Object 类型。http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html

于 2012-09-11T12:05:28.127 回答
1

这样的列表只能包含类型的元素,Object因为 Object 没有任何超类型,类似于使用不可变类(如 String)的扩展,其中此类集合只能包含字符串。

于 2012-09-11T12:05:16.847 回答