【问题标题】:Creating array of collections [duplicate]创建集合数组[重复]
【发布时间】:2016-09-06 07:08:01
【问题描述】:

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

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

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

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

为什么上述情况没有编译器警告

【问题讨论】:

    标签: java arrays collections


    【解决方案1】:

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

    由于上述原因,允许有类似T[] array = new E[size]; 的东西,其中 E 是 T 的子类型。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 2022-09-26
      • 2014-03-29
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      相关资源
      最近更新 更多