Java 泛型 - 类型擦除

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

类型擦除规则

  • 如果使用有界类型参数,则将泛型类型中的类型参数替换为其绑定的类型参数。

  • 如果使用无界类型参数,请将泛型类型中的类型参数替换为 Object。

  • 插入类型转换以保持类型安全。

  • 生成桥接方法以保持扩展泛型类型的多态性。