ASTParserを使ってプロキシメソッドを生成してみる | 坂道で

坂道で

ゆるめ

今回はASTParserを使って、プロキシメソッドを作ってみるという話し。
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でいいじゃんと言われたらぐーのねも出ない。

ばいばい。