Type Erasure

泛型的引入为Java语言提供了泛型编程的支持并且使得编译时有了更严格的类型检查。为了实现泛型,Java编译器使用了类型擦除:

  • 将泛型类型的所有类型参数替换为他们的边界或者是Object(如果类型参数没有边界)。也就是说,产出的字节码只包含原始的类,接口以及方法。

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

  • 生成桥接函数以便在扩展的泛型类型中保留多态。

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

Last updated