Javassistを使うと、実行時のクラス拡張(コンパイル済みのクラスをJavaプログラム実行時に改変し、メソッドに処理を追加したり、フィールドを追加したりすること。)ができます。以下は簡単なサンプルとはまったところについてのメモです。 簡単なサンプル "com.example.Kitten"を"名前を話すcom.example.Kitten"に拡張してみます。基本的な手順は次の通り。Javassistは3.4を使用しています。 ClassPoolを作る。 CtClassを作る。 CtClassのAPIを呼び出し、クラスを拡張する。 CtClass#getDeclaredMethod(String)で修正するメソッドを取得。 CtMethod#setBody(String)でメソッドの本体を修正。 CtClass#toClass(ClassLoader, ProtectionDomain)