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]; } }