为什么下面的代码不起作用?
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
List<List<URL>> announces;
announces = new ArrayList<ArrayList<URL>>();
错误如下:
Type mismatch: cannot convert from ArrayList<ArrayList<URL>> to <List<List<URL>>
最佳答案
因为您的泛型绑定(bind)到一个类型 List<URL>
.即只有 List
(这是一个接口(interface))被接受。
您可以使用 wildcards 允许任何列表.
List<? extends List<URL>> announces;
你也可以考虑subtyping .示例:
List<List<URL>> announces = new ArrayList<List<URL>>();
announces.add(new ArrayList<URL>());
announces.add(new LinkedList<URL>());
这是有效的,因为通用类型接受 List<URL>
和 ArrayList
, LinkedList
是一个 List
.
关于java - 为什么不能将 ArrayList 分配给 List 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5230124/