Type Erasure
泛型的引入为Java语言提供了泛型编程的支持并且使得编译时有了更严格的类型检查。为了实现泛型,Java编译器使用了类型擦除:
将泛型类型的所有类型参数替换为他们的边界或者是
Object
(如果类型参数没有边界)。也就是说,产出的字节码只包含原始的类,接口以及方法。必要时插入类型转换以保持类型安全。
生成桥接函数以便在扩展的泛型类型中保留多态。
类型擦除可确保不会为参数化类型而创建新的类;因此,泛型不会产生运行时开销。
Last updated
泛型的引入为Java语言提供了泛型编程的支持并且使得编译时有了更严格的类型检查。为了实现泛型,Java编译器使用了类型擦除:
将泛型类型的所有类型参数替换为他们的边界或者是Object
(如果类型参数没有边界)。也就是说,产出的字节码只包含原始的类,接口以及方法。
必要时插入类型转换以保持类型安全。
生成桥接函数以便在扩展的泛型类型中保留多态。
类型擦除可确保不会为参数化类型而创建新的类;因此,泛型不会产生运行时开销。
Last updated