ASTVisitorの使い方が分からなければ、過去の記事をどうぞ。
とりあえず、サンプルはこちら。
public boolean visit(TypeDeclaration node)
でクラス宣言を引っ掛けて、
node.bodyDeclarations()
でメソッド宣言全部に、
generateProxy(methodDecl)
を掛けている。
generateProxyでは
1.メソッド宣言のコピー
2.コピー元のメソッド宣言の改名(先頭に$をくっつける)
3.コピー先メソッド宣言のbodyへ、コピー元へのメソッド呼び出しを追加
なんて処理をしている。
ごちゃごちゃしてくるのは引数設定のあたりかな。
あと、ReturnType2周り。
void型以外のメソッドはreturn文が必要だから、
.equals(PrimitiveType.VOID)
なんて処理が必要になる。
今回は一行しか無いプロキシメソッドを生成してみたけど、
もっと色々やりたかったら、戻ってきたproxyMethodに
proxyMethod.getBody().statements().add(...)
とかやればいいかも。
java.lang.reflect.Proxyでいいじゃんと言われたらぐーのねも出ない。
ばいばい。