java - 为什么这不能编译 : List<List<String>> lss = new ArrayList<ArrayList<String>>();

标签 java generics arraylist

<分区>

下面的代码:

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 是一个接口(interface),所以这是不可能的?

最佳答案

问题是泛型中的类型说明符不允许(除非你告诉它)允许子类。您必须完全匹配。

试试:

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

或:

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

关于java - 为什么这不能编译 : List<List<String>> lss = new ArrayList<ArrayList<String>>();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20702635/

相关文章:

C# - 当传入带参数的函数时,通用类型函数尝试将结果分配给 System.Func(指定类型)

android - 根据ImageSlider更改按钮文本颜色

java - indexOf() 方法在 ArrayList 中找不到我的字符串

android - 为什么 startActivityForResult 不起作用?

java - 我的一些方法遇到了多个 "error: missing return statement"错误。我做错了什么以及如何解决?

java - 如何实时计算网页排名

c - 是否可以使用泛型函数将数组复制到 C 中另一个数组的不同类型

Bash 通用 "ps aux"按严格名称处理

Java - 从一行中读取特定部分( ""之间)

java - 使用 Java Netscape Directory LDAP API 和二进制过滤器值