Java 无法创建参数化类型的数组
我在读java文档Java 无法创建参数化类型的数组,java,arrays,Java,Arrays,我在读java文档 https://docs.oracle.com/javase/tutorial/java/generics/restrictions.html#createArrays 上面说 "You cannot create arrays of parameterized types" 所以我可以使用下面的代码创建ArrayList的数组 ArrayList<Integer>[] al = new ArrayList[n]; 这里的参数化类型是什么。?我认为它是整数,
https://docs.oracle.com/javase/tutorial/java/generics/restrictions.html#createArrays
上面说
"You cannot create arrays of parameterized types"
所以我可以使用下面的代码创建ArrayList的数组
ArrayList<Integer>[] al = new ArrayList[n];
这里的参数化类型是什么。?我认为它是
整数
,但它在两种类型的数组中都存在。您的第一个示例是原始类型;这样就完全绕过了Java泛型类型检查。@ElliottFrisch,第二个示例中什么不是原始类型?List
是一个参数化接口,仍然算作参数化类型。右侧的泛型类型声明(示例中菱形括号中的位-List
)。Java在运行时对泛型使用类型擦除,所以在运行时它不知道arrayOfLists只包含List
type的列表。@stringy05,如果我喜欢这个新列表的话,在右边[2];它允许,但左手边呢,泛型类型还在那个里被提到。。。?你不认为它在语法上是错误的吗?你的第一个例子是一个原始类型;这样就完全绕过了Java泛型类型检查。@ElliottFrisch,第二个示例中什么不是原始类型?List
是一个参数化接口,仍然算作参数化类型。右侧的泛型类型声明(示例中菱形括号中的位-List
)。Java在运行时对泛型使用类型擦除,所以在运行时它不知道arrayOfLists只包含List
type的列表。@stringy05,如果我喜欢这个新列表的话,在右边[2];它允许,但左手边呢,泛型类型还在那个里被提到。。。?你不认为这在语法上是错误的吗?
List<Integer>[] arrayOfLists = new List<Integer>[2];