谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

オーバーライドされたメソッドの元のメソッドを呼び出す実験をしてもらいました

すっごい検証して頂きました。ありがとうございます!!!

[JavaHouse-Brewers:36709] Re: superクラスのメソッドの呼び出し方によるとinvokespecialを使えば(オーバーライドされていても)指定したクラスに定義されているメソッドを直接呼べるようだ。そこで、ASM(http://asm.objectweb.org/download/index.html)を使ってinvokespecialを実行するクラスを動的に生成し、呼べるようにしてみた。

処理の流れとしては、invokespecialを実行するメソッドを含むクラスの定義(バイト列)をASMで生成→カスタムのクラスローダでクラスを生成→インスタンス化して実行、という感じ。

オーバーライドされたメソッドの元のメソッドを呼び出す実験 -- terazzoの日記

クラス書き換えせずに何とかならないかなと思っていましたが
ある程度、やんなきゃダメみたいですね。


うまく結果が出たら、また続報で書きます m(_ _)m