私はjavassistを使用しており、ロードタイム/ランタイムでインターフェースやその他のものを生成しています。
インターフェースのメソッドを (バイトコードの invokeinterface で) 呼び出すには、いくつかのパラメーターを提供する必要があります: indexbyte1、indexbyte2、count、および 0 ( http://java.sun.com/docs/books/jvms/second_edition/html/Instructions2 から)。 doc6.html )。
呼び出したい抽象メソッド (CtMethod) が既にあるのですが、そのカウントを計算するにはどうすればよいですか?
たとえば、http://java.sun.com/docs/books/jvms/second_edition/html/Instructions2.doc6.htmlでは、「invokeinterface 命令のカウント オペランドは、引数値の数の測定値を記録します。 long 型または double 型の引数値はカウント値に 2 単位寄与し、その他の型の引数は 1 単位寄与します。この情報は、選択したメソッドの記述子から取得することもできます。冗長性は歴史的なものです。 "
しかし、「カウントオペランドはゼロであってはならない符号なしバイトです」とも言います。
呼び出したい抽象メソッドにパラメーターがない場合、カウントは 0 になります!? ただし、count を 0 にすることはできません。メソッドの記述子は ()V です。
助言がありますか?