-マッチポンプ

「AnnotationMirror」のエントリを書いた後、風呂に入っていて気がついたけど、IkushipeではAnnotationMirrorが無いと出来ない機能が少なくとも2つありました。プロパティバリデーションとプロパティコンバートです。

@LengthValidator(min=0, max=16)
String getUserName();

上記のようなバリデーションを行うに際し、@LengthValidatorはフレームワーク決めうちではなく、それ自体がPropertyValidatorというメタアノテーションに修飾されてるかどうかで組み込みを行うので、getUserName()を示すMethodDeclarationからアノテーション情報を取得するのに、< A extends Annotation> Declaration#getAnnotation(Class< A >): Aでは取得できないのですね。名前を知らない人だから。こちら、getAnnotationMirrors()でごっそり持ってきてループチェックしないといけなかった。。。マッチポンプでしたね。