在List中使用通配符时编译时错误

Ama*_*pta 5 java list wildcard

List<? extends String> list = new Arraylist<String>();
list.add("foo");
Run Code Online (Sandbox Code Playgroud)

给定一段代码给我编译时错误.我不明白为什么我不能在列表中添加字符串.但代码意味着我们可以在列表中添加String类对象及其派生类对象,但我仍然得到错误原因

use*_*685 2

List<?>仅当您不关心项目的数据类型并且对获取列表大小等操作感兴趣时才应使用。

例如,

public int getSize(List<?> itemList) {
     return itemList.size();
}
Run Code Online (Sandbox Code Playgroud)

它更像是一个Read Only列表。

如果您打算创建新的String项目列表,则应该使用以下内容。

List<String> list = new Arraylist<>();
list.add("foo");
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用这个:

List<Object> list = new Arraylist<>();
list.add("foo");
Run Code Online (Sandbox Code Playgroud)