JVM方法调用-解析和分派

请大家看看我对这个的理解对不对。
如果调用一个虚方法-invokevirtual,首先会在编译时通过静态分派,确定它的重载版本,也就是根据参数的静态类型确定是哪个方法
然后运行时再通过动态分派通过对象的实际类型来确定执行哪个类的方法。具体就是先找具体类型,如果有这个方法,执行;没有就去父类寻找,如此循环。最后将符号引用转化为直接引用

如果调用的是一个非虚方法-invokestatic、invokespecial或者被final修饰的方法,首先还是通过静态分派,确定方法的重载版本。
但是因为这些方法都不可能被重写,所以在类加载的解析阶段就会直接把它们转化为直接引用

静态分派发生在编译时,确定方法重载版本
动态分派发生在运行时,也就是动态连接, 方法调用者不唯一,方法重写的实现
解析发生在类加载的解析阶段,方法调用者唯一

#Java工程师##Java#
全部评论

相关推荐

12-15 14:16
门头沟学院 Java
回家当保安:发offer的时候会背调学信网,最好不要这样。 “27届 ”和“28届以下 ”公司招聘的预期是不一样的。
实习简历求拷打
点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
秋招吐槽大会
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务