首页 > 解决方案 > 为什么不能创建参数化类型的数组?

问题描述

我试过像这样创建一个整数列表数组

List<Integer>[] arrayOfLists = new List<Integer>[2];

但注意到它会引发错误“ generic array creation”。然后我像这样尝试

List<Integer>[] arrayOfLists = new List<>[2];

引发错误“ cannot create array with '<>'”。

另一方面,如果我完全删除右侧的类型规范,它会起作用:

List<Integer>[] arrayOfLists = new List[2];

所以现在我的问题是:为什么?为什么我不能指定类型?是什么导致了这种限制?

我在 Java 文档https://docs.oracle.com/javase/tutorial/java/generics/restrictions.html#createArrays中偶然发现了这一点,原因是在特定情况下“应该抛出 ArrayStoreException,但是运行时无法检测到它。” 这反过来又提出了一个问题:为什么运行时无法检测到它?

标签: javaarrayslistgenerics

解决方案


推荐阅读