在java编译阶段,会把方法源代码编译成字节码指令,
在编译阶段:
这个时候,会有静态分派,来确定所调用方法是静态类型中的哪一个,(重载)。
然后成为invoke__指令的参数。
在类加载阶段的解析阶段:(静态解析)
(加载,验证,准备,解析,初始化,使用,卸载)
由指令invokespecial,invokestatic 操作的方法直接解析,还有invokevirtual final方法,就是非虚方法。
(所谓动态分派:(解析)
在运行阶段:由指令invokevirtual操作的非final方法, 先在调用方法的实际对象所属的类中找,标准是,(简单名字,描述符。)因为,在invoke__后的方法形式是:
静态类型全限定名 方法简单名字 方法描述符
时间: 2024-11-05 13:21:50