Java语言引入了泛型,以在编译时提供更严格的类型检查并支持泛型编程。为了实现泛型,Java编译器将类型擦除(type erasure)应用于: 如果类型参数不受限制,则将泛型类型中的所有类型参数替换为其边界或Object 。因此,产生的字节码仅包含普通的类,接口和方法。必要时插入类型转换,以保持类型安全。生成桥接方法以在扩展的泛型类型中保留多态。 类型擦除可确保不会为参数化类型创建新的类;因此,泛型不会产生运行时开销。