Java中如何创建List<List<Integer>>类型的数组?
创建List<List>类型数组的编译错误解决方法
尝试创建List<List<Integer>>类型的数组时,编写了如下代码:
List<List<Integer>>[] numList = new ArrayList<List<Integer>>[10];
编译时出现以下错误:
Cannot create a generic array of ArrayList
Type mismatch: cannot convert from boolean to List
正确写法有以下几种方案:
方案1:用嵌套列表替代数组(推荐)
Java不允许直接实例化泛型数组,最安全合规的方式是用List<List<List<Integer>>>来模拟数组结构:
List<List<List<Integer>>> numList = new ArrayList<>(); // 初始化10个空的List<Integer>容器 for (int i = 0; i < 10; i++) { numList.add(new ArrayList<>()); }
这种写法完全符合泛型规范,没有编译警告或错误,类型安全有保障。
方案2:借助通配符创建数组(带unchecked警告)
如果业务场景必须使用数组,可以通过通配符类型绕过编译检查,不过会产生unchecked警告,使用时需确保不会存入不符合类型的元素:
@SuppressWarnings("unchecked") List<List<Integer>>[] numList = (List<List<Integer>>[]) new ArrayList<?>[10]; // 初始化每个数组元素 for (int i = 0; i < numList.length; i++) { numList[i] = new ArrayList<>(); }
方案3:使用原始类型数组(不推荐)
也可以基于原始类型ArrayList创建数组后强转,但这种写法会丢失泛型类型检查,容易引发运行时错误,不建议使用:
@SuppressWarnings({"unchecked", "rawtypes"}) List<List<Integer>>[] numList = (List<List<Integer>>[]) new ArrayList[10];
内容的提问来源于stack exchange,提问作者Dheerendra Kulkarni
相关产品推荐
相关产品推荐

