类型擦除
原文: https://docs.oracle.com/javase/tutorial/java/generics/erasure.html
泛型被引入到 Java 语言中,以便在编译时提供更严格的类型检查并支持泛型编程。为了实现泛型,Java 编译器将类型擦除应用于:
- 如果类型参数是无界的,则将泛型类型中的所有类型参数替换为其边界或
Object
。因此,生成的字节码仅包含普通的类,接口和方法。 - 如有必要,插入类型铸件以保持类型安全。
- 生成桥接方法以保留扩展泛型类型中的多态性。
类型擦除确保不为参数化类型创建新类;因此,泛型不会产生运行时开销。