<分区>
Java 不允许创建集合数组,显示编译错误cannot create a generic array
ArrayList<String>[] list = new ArrayList<String>[2];
但我可以像这样创建通用集合
ArrayList<?>[] list = new ArrayList<?>[2];
为什么上面的情况没有编译警告
<分区>
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 数据库查询
javascript - 如何从另一个对象向 json 对象添加数据?
java - 如何在 Java 中将 Map<String, Set<String>> 转换为 Map<String, String[]>
java - Netbeans 中有关 join 方法的错误
java - Mahout seqdirectory 不工作
java - 如何在以 root 身份执行的可执行 jar 内以用户模式运行脚本?
java - 一致的 Equals() 结果,但不一致的 TreeMap.containsKey() 结果