【发布时间】:2018-01-01 07:49:15
【问题描述】:
我想了解这两种定义的区别,以及为什么正确的是正确的,错误的是错误的。
显示编译错误的那个
List<List<Integer>> arr2 = new ArrayList<ArrayList<Integer>>();
它给我的错误:
try2.java:8: error: incompatible types: ArrayList<ArrayList<Integer>> cannot be
converted to List<List<Integer>>
List<List<Integer>> arr2 = new ArrayList<ArrayList<Integer>>();
正在工作的那个:
List<ArrayList<Integer>> arr = new ArrayList<ArrayList<Integer>>();
注意:
我明白为什么下面的工作:
List<Integer> arr = new ArrayList<Integer>();
Edit-1:
现在我只想了解List<List<Integer>> arr2 = new ArrayList<ArrayList<Integer>>();有什么问题
【问题讨论】:
-
对于
Arraylist的初始化,只需将其设为new ArrayList<>()并省略类型即可,List<List<Integer>>的变量定义足以保证类型正确 -
@SomeJavaGuy 他试图理解,而不是修复
-
@pivovarit 他可以保留类型,这是可以理解的,因为没有必要包含它,另一件事是,这是他的编译错误,而不是继承相关,不是每个 @ 987654330@ 是
ArrayList。 -
List<List<Integer>> arr2 = new ArrayList<List<Integer>>();
标签: java list collections java-7 associative-array