java - 这到底是什么意思 Collection<?延伸 E> c

标签 java javadoc

有时,很多次我在文档中看到这种情况。这让我想知道要输入什么。有人可以用清晰的简化文字向我解释这句话的意思吗:D。这是怎么回事:

ArrayList(Collection<? extends E> c)

最终被用作:

new ArrayList<>(Arrays.asList("a","b","c"));

所以我不需要再通过谷歌搜索来问这个“问题”,而是能够自己弄清楚。

最佳答案

语法 ? extends E意思是“某种类型,要么是 E 要么是 E 的子类型”。 ?是通配符。

代码Arrays.asList("a","b","c")推断返回 List<String> , 和 new ArrayList<>使用菱形运算符,因此会产生 ArrayList<String> .

通配符允许您推断子类型——您可以将其分配给具有父类(super class)型的引用变量:

List<CharSequence> list = new ArrayList<>(Arrays.asList("a","b","c"));

在这里,E被推断为 CharSequence而不是 String ,但这行得通,因为 StringCharSequence 的子类型.

关于java - 这到底是什么意思 Collection<?延伸 E> c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33554839/

相关文章:

java - Maven 站点(Maven 3)生成空站点文件夹

java - 如何在绑定(bind)地址不是本地主机而是我的 IP 的 Intellij 中配置 JBoss?

java - 表格左侧可见的列名而不是顶部

java - 如何定义可以通过单击访问的 Javadoc 链接

java - 我在哪里可以找到 Hibernate-JPA jar 的 javadoc

eclipse - 使用 Play 框架下载依赖 Jar 的源代码和 Javadoc

java - 为什么 super 不在这里扩展?来自java教程: a short course on the basics by ray gallardo et al

java - Html 文档中的多行

java - 如何检查包含空元素的空字符串数组

intellij-idea - 如何在IntelliJ IDEA中查看JDK外部文档?