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