为什么这不编译:List <List > lss = new ArrayList <ArrayList >();
以下代码:
List<List> lss = new ArrayList<ArrayList>();
导致此编译时错误:
Type mismatch: cannot convert from ArrayList<ArrayList> to List<List>
修复我将代码更改为:
List<ArrayList> lss = new ArrayList<ArrayList>();
为什么抛出这个错误? 这是因为List<List>
的generics类型List是实例化的,因为List是一个接口,这是不可能的吗?
问题是generics中的类型说明符(除非你告诉它)允许子类。 你必须完全匹配。
尝试:
List> lss = new ArrayList>();
要么:
List extends List> lss = new ArrayList>();
来自http://docs.oracle.com/javase/tutorial/java/generics/inheritance.html
注意:给定两个具体类型A和B(例如,Number和Integer),
MyClass
与MyClass
无关,无论A和B是否相关。MyClass
和MyClass
的公共父是Object。
同样的道理
List myList = new ArrayList();
不会工作。
您可以查看此问题以获取更多详细信息。