#invokevirtual之后做什么

时间:2019-03-15 19:20:03

标签: java-bytecode-asm invokevirtual

例如,如果将整数变量a和b存储在局部变量1和2中,则此代码将计算this.f(3+b*a)。 (此指针存储在变量0中)

iload_1
aload_0
icons_3
iload_1
iload_1
imul
iadd
invokevirtual #4

#4在这里代表什么?

1 个答案:

答案 0 :(得分:2)

这是指向类文件的常量池的索引;它表示invokevirtual的操作数存储在常量池的索引#4(将是Constant_MethodRef_info上。)如果您使用javap标志调用-v,它将转储常量池,您将在索引#4处看到它正在调用什么类和方法。