java – 为什么不编译:List> lss = new ArrayList>();

参见英文答案 > Is List<Dog> a subclass of List<Animal>? Why are Java generics not implicitly polymorphic?                                    16个
以下代码:

List<List<String>> lss = new ArrayList<ArrayList<String>>();

导致此编译时错误:

Type mismatch: cannot convert from ArrayList<ArrayList<String>> to List<List<String>>

修复我将代码更改为:

List<ArrayList<String>> lss = new ArrayList<ArrayList<String>>();

为什么抛出这个错误?这是因为List< List< String>>中的泛型类型List实例化,因为List是一个接口,这是不可能的?

最佳答案
问题是泛型中的类型说明符不会(除非你告诉它)允许子类.你必须完全匹配.

尝试:

List<List<String>> lss = new ArrayList<List<String>>();

要么:

List<? extends List<String>> lss = new ArrayList<ArrayList<String>>();

转载注明原文:java – 为什么不编译:List> lss = new ArrayList>(); - 代码日志