首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java动态绑定机制的内情

2012-12-21 
Java动态绑定机制的内幕???? 在Java方法调用的过程中,JVM是如何知道调用的是哪个类的方法源代码? 这里面到

Java动态绑定机制的内幕

???? 在Java方法调用的过程中,JVM是如何知道调用的是哪个类的方法源代码? 这里面到底有什么内幕呢? 这篇文章我们就将揭露JVM方法调用的静态(static binding) 动态绑定机制(auto binding)

?

?

★ 静态绑定机制

????? (4) 这是通过第(2)步中解析完成的#15常量表中的方法表的索引项11,可以定位到Son类型方法表中的方法f1(),然后通过直接地址找到该方法字节码所在的内存空间。

?

????? 很明显,根据对象(father)的声明类型(Father)还不能够确定调用方法f1的位置,必须根据father在堆中实际创建的对象类型Son来确定f1方法所在的位置。这种在程序运行过程中,通过动态创建的对象的方法表来定位方法的方式,我们叫做 动态绑定机制

?

????? 上面的过程很清楚的反映出在方法覆盖的多态调用的情况下,JVM是如何定位到准确的方法的。但是下面的调用方法JVM是如何定位的呢?(仍然使用上面代码中的Father和Son类型)

public class Obscure{ static String System;// Obscures type java.lang.System public static void main(String[] args) // Next line won't compile:System refers to static field System. out. println(“hello, obscure world!”); }}

?

热点排行