Java的泛型(Generics)通过类型擦除(Type Erasure)机制实现向后兼容(兼容Java 5前的非泛型代码),而桥接方法(Bridge Method)则是类型擦除过程中为保持多态性自动生成的特殊方法。以下将详细解释这两个核心机制,并结合示例说明其工作原理。
一、类型擦除(Type Erasure)
1. 定义与目的
类型擦除是Java编译器在编译泛型代码时,将泛型类型参数替换为其上限类型(默认是Object
,若指定了上限如<T extends Number>
则替换为Number
)的过程。其核心目的是:
- 兼容旧代码:避免引入新的字节码结构,使泛型代码能与Java 5前的非泛型代码共存。
- 消除类型冗余:确保泛型仅在编译期提供类型安全检查,运行时不保留具体类型信息。
2. 类型擦除的具体规则
- 类型参数替换:泛型