任何机构都可以解释这个通用向量Vector<? super Object> list = ...
以及在哪里使用它吗?
答案 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这样的不可变类的扩展,其中这样的集合只能包含字符串。