kum*_*mo2 1 java collections associative-array list java-7
我想了解两个定义之间的区别以及为什么正确的定义是正确的,错误是错误的.
那个显示编译错误的那个
List<List<Integer>> arr2 = new ArrayList<ArrayList<Integer>>();
Run Code Online (Sandbox Code Playgroud)
它给我的错误:
try2.java:8: error: incompatible types: ArrayList<ArrayList<Integer>> cannot be
converted to List<List<Integer>>
List<List<Integer>> arr2 = new ArrayList<ArrayList<Integer>>();
Run Code Online (Sandbox Code Playgroud)
正在工作的那个:
List<ArrayList<Integer>> arr = new ArrayList<ArrayList<Integer>>();
Run Code Online (Sandbox Code Playgroud)
注意:
我理解为什么下面这个有效:
List<Integer> arr = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)
编辑-1:
现在我只想了解问题所在 List<List<Integer>> arr2 = new ArrayList<ArrayList<Integer>>();
你不需要任何:
List<List<Whatever>> items = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
完成.
重要的是要理解:你不能创建那些"内在"列表.您只需创建一个List(具有"列表列表").稍后,您会这样做:
List<Whatever> innerItems = new ArrayList<>();
items.add(innerItems);
Run Code Online (Sandbox Code Playgroud)
例如.原因是:集合不是数组.Java允许您写下创建完整的2-Dim数组的表达式.但是集合没有多维度的概念(实现方式)!
其中一部分是泛型实际上是使用类型擦除实现的.这意味着:实际的列表实现不知道您在源代码中使用的泛型类型.它只处理实例Object.从这个意义上说,实现"不知道"新列表应该包含的内容是不可能的List<Whatever>.
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |