我是 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/