アスペクトJとinvokedynamicを使った作業では、ポイントカットが呼び出されたメソッドと一致するときに、メソッドにアドバイスを織り込む必要があります。最初に、スクリプト内の invokedynamic-instruction のブートストラップ メソッドを独自のものと交換しました。ここで、ブートストラップ メソッドで、呼び出されたメソッドを最初に呼び出す CallSite を返し、その後、定義したアドバイスを返したいと考えています。
問題は、元のブートストラップ メソッドで使用されたものと同じ型シグネチャを持つ 1 つの MethodHandle から CallSite ビルドを返さなければならないことです。2 つのメソッドハンドル (元の + アドバイス) を新しいものに結合し、それを返される CallSite に使用することを考えました。しかし、それを行うための適切な方法が見つかりません。MethodHandles.foldArguments は有望なようですが、私にはうまくいきませんでした。もう 1 つのアイデアは、元のメソッド ハンドルとアドバイスを呼び出すラッパー メソッドから MethodHandle を構築することでしたが、問題は正しい型シグネチャです。
誰か私にアイデアや提案はありますか? アドバイスを使用して MethodHandle にパッチを適用するにはどうすればよいですか?
ありがとうございました。