java - 创建集合数组

标签 java arrays collections

<分区>

Java 不允许创建集合数组,显示编译错误cannot create a generic array

ArrayList<String>[] list = new ArrayList<String>[2];

但我可以像这样创建通用集合

ArrayList<?>[] list = new ArrayList<?>[2];

为什么上面的情况没有编译警告

最佳答案

在 Java 中,您不能创建通用数组。我认为不允许这样做的原因是因为数组是 reified这意味着类型信息在运行时是已知的并由它们强制执行。相比之下,泛型的类型信息是 erased在运行时。

因为上面的原因,它被允许有这样的东西T[] array = new E[size];其中 E 是 T 的子类型。

当你使用泛型时,你不能做这样的事情:List<T> list = new ArrayList<E>();其中 E 是 T 的子类型。

数组唯一允许的类型参数是 unbound wildcard ?因为这意味着接受任何类型。

关于java - 创建集合数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39342639/

相关文章:

java - 通过 apache tomcat 8 运行时无法运行 h2 数据库查询

arrays - 隐式 do 循环数组初始化

javascript - 如何从另一个对象向 json 对象添加数据?

java - 如何在 Java 中将 Map<String, Set<String>> 转换为 Map<String, String[]>

java - Netbeans 中有关 join 方法的错误

java - Mahout seqdirectory 不工作

java - 如何在以 root 身份执行的可执行 jar 内以用户模式运行脚本?

java - 一致的 Equals() 结果,但不一致的 TreeMap.containsKey() 结果

javascript - 如何将以下数组数据分组到上述结构中?

c# - 只读列表<字典<>>