generics中的数组类型

我正在尝试创建一个generics类型的数组。 我收到错误:

Pair[] pairs; // no error here pairs = new Pair[10]; // compile error here void method (Pair[] pairs) // no error here. 

我很迷惑。 任何线索为什么会发生这种情况。

这背后的原因是你不能创建generics或参数化类型的数组,只能创建可再生类型(即可以在运行时推断出的类型)。

虽然可以将这样的数组类型声明为变量或方法参数。 这有点不合逻辑,但这就是Java现在的样子。

Javagenerics和集合在第6章中广泛讨论了这个问题和相关问题。

创建没有generics类型的数组:

 Pair[] pairs = new Pair[10]; 

编译器不会抱怨,您不必使用任何@SuppressWarnings注释。

您无法创建generics类型的数组
检查通用教程

这个构造编译

 import java.util.HashMap; public class Test { class Pair extends HashMap { } public static void main(String[] args) { Pair[] pairs = new Pair[10]; } }