这究竟是什么意思?扩展E> c

Jos*_*s87 5 java javadoc

有时候,我很多时候会在文档中看到这种情况.它让我想知道要输入什么.有人可以用明确的愚蠢的文字向我解释这个含义:D.怎么样:

ArrayList(Collection<? extends E> c)
Run Code Online (Sandbox Code Playgroud)

最终用作这个:

new ArrayList<>(Arrays.asList("a","b","c"));
Run Code Online (Sandbox Code Playgroud)

所以我不需要通过谷歌搜索来问这个"问题",而是能够自己解决这个问题.

rge*_*man 10

语法? extends E意味着"某种类型的E或E的子类型".这?是一个通配符.

Arrays.asList("a","b","c")推断代码返回a List<String>,并new ArrayList<>使用菱形运算符,从而产生一个ArrayList<String>.

通配符允许您推断子类型 - 您可以将其分配给具有超类型的引用变量:

List<CharSequence> list = new ArrayList<>(Arrays.asList("a","b","c"));
Run Code Online (Sandbox Code Playgroud)

在这里,E推断为CharSequence代替String,但是有效,因为String是子类型CharSequence.