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

标签 java list

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

但是当你通过 c 时,你会如何处理集合的 Wildcard 类型?例如,你应该说:

for (Object item: c) {

您如何引用它是 ? 类型。

编译器不喜欢:

for (? item: c) 

for (<?> item: c)

最佳答案

是的,你会写

for (Object item: c) {

根本就没有名为 ? 的类型——它是一个通配符,表示此处允许任何内容(即允许的类型没有界限);它不是“通配符类型”。您能做的最好的事情就是使用 Object,因为您对此类集合中的元素一无所知。通配符的作用是表示类型未知

通配符与

有很大不同
Collection<E>

Collection<Object>

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

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

关于Java List 接口(interface)方法 : containsAll(Collection<? > c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7961627/

相关文章:

java - 如何在 Activity 开始时将按钮置于按下状态?

java - 替换密码 - 编码

java - 如何将带有自定义对象的 HashMap 添加到 ArrayList

python - 如何在列表字典中获取特定值

java - 如果我经常使用 contains 方法,是否有比 HashMap 更好的 DS 来存储项目列表?

java - Jhipster Spring Boot 日志设置

java - debug 属性在 ant 脚本的 JAVAC 标记中可以值为 "on"

java - 在 GlassFish 上创建和运行 RESTful Web 服务

list - Haskell 中的详细列表理解

list - 如何从tcl列表中删除空元素