java - java中参数化ArrayLists的通用数组?

标签 java arrays generics micro-optimization

我是 Java 的新手,所以我不知道其中的细节。
为什么我不能创建参数化 ArrayList 的通用数组?
相反,我必须写,

ArrayList<String>[] alist = new ArrayList[10]; 

或者我必须创建 ArrayLists 列表。
难道数组不应该比 ArrayList 更高效吗?那为什么Java不允许呢?
另外,下面两行有什么区别。

ArrayList<String>[] alist = new ArrayList[10];  
ArrayList<String>[] alist = new ArrayList<?>[10];  

最佳答案

您必须这样做的原因是因为 Java 中真的不存在泛型。它实际上是一个 compiler hack .

至于您发布的两行,在生成的字节码方面应该没有任何区别。但是,在第一种情况下,您可能会收到警告,因为您的编译器认为您忘记了 java.util.ArrayList 需要类型参数,而后者不会编译,因为您正在尝试实例化一个通用数组。双输局面:(

关于java - java中参数化ArrayLists的通用数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2488207/

相关文章:

c# - 编译时错误 父类(super class)型集合引用所引用的子类型集合对象

java - Libgdx 加速度计不工作?

java - 分割字符串时的奇怪行为

java - 如何从SecondActivity调用MainActivity中的非静态方法?

在1.5上编译的java代码可以运行1.4环境

scala - 使用多态函数作为参数

java - 如何选择在类(maven)中使用哪个库?

java - 找出和为 15 的最小数字对

php - 将值放入多维数组键中

MySql 存储过程 - 如何将多个 id 选择到变量中