3

たとえば、int 変数 a と b がローカル変数 1 と 2 に格納されている場合、このコードは を計算しthis.f(3+b*a)ます。(this-pointer は変数 0 に格納されます)

iload_1
aload_0
icons_3
iload_1
iload_1
imul
iadd
invokevirtual #4

#4ここに立っているのは何ですか?

4

1 に答える 1

5

これは、クラスファイルの定数プールへのインデックスです。のオペランドがinvokevirtual定数プールのインデックス #4 に格納されていることを示しています (これは a になりConstant_MethodRef_infoます)。フラグを指定して呼び出すjavap-v、定数プールがダンプされ、インデックス #4 でどのクラスとメソッドが表示されるかがわかります。それは呼び出しています。

于 2019-03-15T19:22:54.983 に答える