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 |