JVM 指令04__方法调用指令和返回指令

一、方法调用指令

在 Jvm 指令当中涉及到方法调用的指令有 5 个,分别是 invokeinterface、invokestatic、invokespecial、invokedynamic、invokevirtual

invokeinterface: 用于调用接口方法,它会在运行时搜索该接口的实现类,在具体的实现类中找出合适的方法进行调用

invokestatic: 用于调用类中的静态方法(静态绑定)

invokespecial: 用于调用一些需要进行特殊处理的方法,具体有实例的构造方法、私有方法、父类的方法,无论如何搜索,最终找到的调用方法都是唯一确定的(静态派发)

invokevirtual: 用于调用对象的实例方法,根据对象的实际类型进行动态派发,支持多态(动态派发)

invokedynamic: 用于调用动态绑定的方法

 

二、方法返回指令

方法返回指令是将当前方法栈帧(活动栈帧)中操作数栈栈顶的元素弹出,并将这个操作数压入方法调用者的操作数栈的栈顶位置

执行返回指令之后即当前方法已结束,活动栈帧弹出虚拟机栈,此时方法调用者对应的方法成为新的活动栈帧

数据类型 返回指令
void return
boolean、byte、short、char、int ireturn
float freturn
double dreturn
long lreturn
reference areturn

 

posted @ 2022-12-02 10:31  变体精灵  阅读(61)  评论(0编辑  收藏  举报