JAVA中的泛型涉及一种擦除机制, 即在编译时候会进行类型检查, 但在实际运行时会擦除掉泛型的类型信息, 下边是一个显示这种现象的示例代码:
package com.cnsuning.src;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Class c1 = (new ArrayList<String>()).getClass();
Class c2 = (new ArrayList<Integer>()).getClass();
System.out.println(c1==c2);
}
}
运行结果:
true
可以看到, 不同的泛型类型在运行时具有相同的class 引用, 这说明在实际运行中泛型类型信息被擦除掉了.