Skip to content

Java 核心机制

动态绑定与静态绑定

特性动态绑定静态绑定
定义在运行时确定调用的方法在编译时确定调用的方法
时机运行时编译时
应用方法覆盖(override)方法重载(overload)、私有方法、静态方法、final 方法
关键字无需特殊关键字static、private、final
效率相对较低相对较高
多态性支持不支持
实现方式通过虚方法表直接调用
示例子类重写父类方法构造方法、静态方法调用

泛型擦拭

Java 编译器在编译泛型代码时,会移除所有泛型类型参数 ,并将它们替换为:

  • 如果有上界(如 <T extends Number>),则替换为上界类型(如 Number);
  • 如果没有上界(如 <T>),则替换为 Object。

泛型擦拭机制主要做到以下三件事情:

  1. 类型参数替换 - 将泛型类型参数替换为原始类型(擦除类型变量,替换为界限类型或 Object)

  2. 类型转换插入 - 在必要的位置自动插入类型转换代码,保证类型安全

  3. 桥接方法生成 - 创建桥接方法以保持多态性,解决方法签名不一致的问题

这些实现方式保证了 Java 泛型的向后兼容性,但也带来了类型信息在运行时不可用等局限性。

NOTE

对于不同泛型参数的类得到的 class 对象相同

Released under the MIT License.