倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

「アスペクト・ライブラリを作る」への注意

前回までに、アスペクト・ライブラリの作成の仕方を見てきました。 今回は、アスペクト・ライブラリの作成に当たっての注意を1つ。

アスペクト・ライブラリの作成方法を書くに当たって参考にしたドキュメントは、AspectJ のコンパイル&織り込みを行うツール「ajc」のドキュメント()です。 そこでは既存のライブラリのソースコードからアスペクト・ライブラリを作成しています。 しかし、これは結構使い方が制限されてしまう方法です。 アスペクト・ライブラリを作成するために、既存のライブラリのソースコードをダウンロード等しなければいけませんし、そもそもソースコードが入手できるかどうかも分かりません。

一方、前回までに見てきた方法では、必要なのはバイトコードのみです。

で、注意事項はというと、上記2通りの方法で作成したアスペクト・ライブラリが同じではないということです。 それぞれのアスペクト・ライブラリがどのようなバイトコードからなっているのかまでは把握していませんが、バイトコードから作成したアスペクト・ライブラリでは、Generics の型パラメータの情報が失われています*1。 これは、仕様なのか、今後改善予定があるのかは不明。 そもそもバイトコードに Generics の型パラメータの情報が残っているのかも怪しい*2

*1:dom4j に Generics に対応したメソッド(List Node#selectElements(String xpath) のようなもの)を付け加えようとしたけど、全く役に立たず・・・

*2:一応、バイトコード上にそういう型情報が残されているようではありますが