Java泛型机制不是真正的泛型机制,因为虚拟机没有泛型类型对象,所有对象都属于普通类;
无论何时定义一个泛型类型,都自动提供一个相应的原始类型。原始类型的名字就是删去类型参数后的泛型类型名。即擦除类型变量,把泛型替换为限定类型(无限定的变量用Object)。
方法的擦出带来两个复杂问题:
对于继承一个泛型类的类,它会有同一方法名的函数重载问题,在这里类型擦出与多态发生冲突,要解决问题需要编译器在本类中生成一个桥方法
对于Java泛型转换需要记住:
虚拟机中没有泛型,只有普通的类和方法。
所以的类型参数都要用它们的限定类型替换。
桥方法被合成来保持多态。
为保持类型安全,必要时插入强制类型转换。