バイトコードを変更できるJavassistを試してみた。
書き換えの方法は慣れてみれば非常にシンプル。Javaソースの形で書いて差し替えられるなんてすごいなぁ。
実際のところ、クラスローダーとかに当てはめる方法の方が苦労するかも。
クラスローダーなんてよく知らないし。下手すると動かなくなるからなぁ。ってそれはバイトコード書き換え自体がそうか(汗)
同じクラスでもクラスローダーが異なれば別クラス扱い(instanceofがfalseになる)なので、ソースの見た目からは分かりづらいバグの温床になるし。
JDK1.5から出来るようになったという、main()の実行前にバイトコード変更クラスを登録するやり方のほうが堅実っぽい気がする。jarファイルをいちいち作らなきゃいけないのがちょっと面倒だけど。