Annotationの継承と複数指定を同時に実現したい
JavaのAnnotationって、.NETのAttrubiteと違って継承できないのよね。
あと、同じAnnotationを複数適用したいというか、.NETで言うところのAttributeUsage(AllowMultiple=true)もできないっと。
Proxyを使った疑似継承みたいなことは出来たり、同じAnnotationをAllowMultipleしたいだけならこういう書き方もあるわけですが。
public @interface Hoge { ... } public @interface Hoges { Hoge[] value(); } @Hoges({ @Hoge( ... ), @Hoge( ... ) }) public class Target { ... }
でも、この2つを同時に満たしたい時はどうすれば良いんでしょ(´・ω・`)?
BaseAnnotationを継承したAAnnotation、BAnnotation、CAnnotationを、それぞれ複数個をターゲットに対して指定し、これらをまとめてBaseAnnotationの配列として取得したい、みたいなことをやりたいわけですが。
// やりたいことイメージ @AAnnotation(name="a1", parama="...") @AAnnotation(name="a2", paramb="...") @BAnnotation(name="b1", paramb="...") @BAnnotation(name="b2", paramc="...") @CAnnotation(name="c1", paramc="...") public class Target { ... } // まとめて取得 BaseAnnotation[] annotations = getBaseAnnotations( Target.class );
ん〜(´ー`)