代码之家  ›  专栏  ›  技术社区  ›  Ori Marko

Eclipse—为什么要推断Java数组的泛型

  •  7
  • Ori Marko  · 技术社区  · 7 年前

    You cannot create arrays of parameterized types

    ArrayList<Integer>[] list = new ArrayList[1];
    

    无法参数化,但Eclipse显示警告

    类型安全性:类型的表达式 ArrayList[] 需要未经检查的转换以符合 ArrayList<Integer>[]

    并提出建议 Infer Generic Type Arguments 提交时不起任何作用。

    推断泛型类型参数 在标识了可以进行此替换的所有位置后,将泛型类型的原始类型引用替换为参数化类型。

    这个建议应该删除还是我遗漏了什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   newacct    7 年前

    是的,这个建议应该删除。此处不可能将原始类型替换为参数化类型,因为数组创建表达式必须使用可重新定义的类型作为组件类型。这样做是违法的 new ArrayList<Integer>[1] . 你只能这样做 new ArrayList[1] new ArrayList<?>[1] ,两者都将产生警告,以便转换为类型 ArrayList<Integer>[] (第二个将需要显式强制转换,该强制转换将产生未经检查的强制转换警告)。