泛型实例化问题

时间:2022-03-15 05:06:51
import java.util.ArrayList;
import java.util.List;

public class GenericTest {
public static void main(String[] args) {

List<String> strArr = new ArrayList<String>();
List<Integer> intArr = new ArrayList<Integer>();

System.out.println(strArr.getClass() == intArr.getClass()); // true
}
}

分析:

在使用泛型类时,虽然传入了不同的泛型实参,但并没有真正意义上生成不同的类型,传入不同泛型实参的泛型类在内存上只有一个,即还是原来的最基本的类型(本实例中为ArrayList),当然,在逻辑上我们可以理解成多个不同的泛型类型。

究其原因,在于Java中的泛型这一概念提出的目的,导致其只是作用于代码编译阶段,在编译过程中,对于正确检验泛型结果后,会将泛型的相关信息擦出,也就是说,成功编译过后的class文件中是不包含任何泛型信息的。泛型信息不会进入到运行时阶段。