泛型中的数组类型

fas*_*ava 3 java arrays generics

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

 Pair<String, String>[] pairs;   // no error here

 pairs = new Pair<String, String>[10];   // compile error here

 void method (Pair<String, String>[] pairs)  // no error here.
Run Code Online (Sandbox Code Playgroud)

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

Pét*_*rök 9

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

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

Java泛型和集合在第6章中广泛讨论了这个问题和相关问题.


Sea*_*oyd 6

创建没有泛型类型的数组:

Pair<String, String>[] pairs = new Pair[10];
Run Code Online (Sandbox Code Playgroud)

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