19.8消除泛型和对泛型的限制
要点提示: 编译器可使用泛型信息,但这些信息在运行时是不可用的。这被称为是类型消除。 泛型是使用一种称为类型消除(type erasure)的方法来实现的。编译器使用泛型类型信息来编译代码,但是随后会消除它。因此,泛型信息在运行时是不可用的。这种方法可以使泛型代码向后兼容使用原始类型的遗留 代码。 泛型存在于编译时。一旦编译器确认泛型类型是安全使用的,就会将它转换为原始类型。例如,编译器会检查图a的代码里泛型是否被正确使用,然后将它翻译成如图b所示的在运行时使用的等价代码。图b的代码使用的是原始类型。 当编译泛型类、接口和方法时,编译器用Object类型代替泛型类型。例如编译器会将图a中的方法转换为图b中的方法。 如果一个泛型类型是受限的,那么编译器就会用改受限类型来替换它。例如编译器会将图a中的方法转换为图b中的方法。 来源: https://www.cnblogs.com/cglib/p/11989754.html