Java Generics 简明教程

Java Generics - Type Erasure

泛型用于在编译时进行更严格的类型检查并提供泛型编程。为了实现泛型行为,Java 编译器应用类型擦除。类型擦除是一个编译器将泛型参数替换为实际类或桥接方法的过程。在类型擦除中,编译器确保不创建额外的类且没有运行时开销。

Type Erasure rules

  1. 如果使用了有界类型参数,则用其界限替换泛型类型中的类型参数。

  2. 如果使用了无界类型参数,则用 Object 替换泛型类型中的类型参数。

  3. 插入类型转换以保持类型安全性。

  4. 生成桥接方法以在扩展泛型类型中保持多态性。