Что делает # после invokevirtual

Например, если int-переменные a и b хранятся в локальных переменных 1 и 2, этот код будет вычислять this.f(3+b*a), (this-указатель хранится в переменной 0)

iload_1
aload_0
icons_3
iload_1
iload_1
imul
iadd
invokevirtual #4

для чего #4 Стой здесь?

1 ответ

Решение

Это индекс в константном пуле файла классов; это говорит о том, что операнд invokevirtual хранится в индексе № 4 постоянного пула (который будет Constant_MethodRef_info.) Если вы вызываете javap с -v флаг, он будет выгружать пул констант, и вы увидите в индексе #4, какой класс и метод он вызывает.

Другие вопросы по тегам