如何解释和使用通用载体?

时间:2012-09-11 12:00:19

标签: java generics vector

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

4 个答案:

答案 0 :(得分:4)

相同
Vector<Object> list

通常“?super Type”表示您可以添加Type

类型的超类型

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

如果是

Vector<? extends Object> list

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

相同
Vector<Object> list

还要考虑List而不是Vector,如果你想要它的线程安全,那么将它包装在Collections.synchronizedList(...)

答案 1 :(得分:4)

您可以在此处定义未知对象?下限。因此Vector<? super Object只能包含Object和任何超级Object。但是因为Object没有超级类,所以没有任何意义。它的行为与Vector<Object>相同。

参考this sample

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:1)

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