Java List接口方法:containsAll(Collection <! - ? - > c)

时间:2011-11-01 01:32:44

标签: java list

我理解如何编写一个contains(E item)方法,通过检查this中的每个项目,如果你发现其中一个元素等于item,则返回true。

但是当你通过c时,你将如何处理集合的通配符类型?你应该这样说:

for (Object item: c) {

您如何引用它是?类型。

编译器不喜欢:

for (? item: c) 

for (<?> item: c)

2 个答案:

答案 0 :(得分:3)

是的,你写了

for (Object item: c) {

根本没有名为?的类型 - 它是一个通配符,表示此处允许任何内容(即,对于允许的类型没有 bounds );它不是“通配符类型”。您可以做的最好是使用Object,因为您对此类集合中的元素一无所知。通配符的意思是说类型未知

通配符与

完全不同
Collection<E>

Collection<Object>

有一些SO问题可以解决这些差异;一个是Java Generics (Wildcards)

但同样,关键的想法是?不是一种类型,它更像是一个元级别的概念。这就是为什么你不能声明那个“类型”的变量。

答案 1 :(得分:0)

是的,请使用for(Object item: c)