Bridge-method
因为java在编译源码时,会进行类型擦除,导致泛型类型被替换限定类型(无限定类型就使用 Object). 因此为保持继承和重载的多态特性,编译器会生成桥方法
String getFirst() // 自己定义的方法
Object getFirst() // 编译器生成的桥方法
知识点
- 虚拟机中没有泛型,只有普通类和方法;
- 在编译阶段,所有泛型类的类型参数都会被Object或者它们的限定边界来替换(类型擦除);
- 在继承泛型类型的时候,桥方法的合成是为了避免类型变量擦除所带来的多态灾难;