类型擦除

原文: https://docs.oracle.com/javase/tutorial/java/generics/erasure.html

泛型被引入到 Java 语言中,以便在编译时提供更严格的类型检查并支持泛型编程。为了实现泛型,Java 编译器将类型擦除应用于:

  • 如果类型参数是无界的,则将泛型类型中的所有类型参数替换为其边界或Object 。因此,生成的字节码仅包含普通的类,接口和方法。
  • 如有必要,插入类型铸件以保持类型安全。
  • 生成桥接方法以保留扩展泛型类型中的多态性。

类型擦除确保不为参数化类型创建新类;因此,泛型不会产生运行时开销。