[java]あれーーー、匿名クラスのアノテーションは実行時につかないの? - いやつきます。 その2
2009/01/30
java
アノテーション
先日書いた記事(プログラマメモ2: [java]あれーーー、匿名クラスのアノテーションは実行時につかないの?)で、コメントをいただきまして、@Inheritedを使う事で解決。
うーん勉強になりました。
というわけで再びコード
package build;
import java.awt.Container;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
public class TestAnnotation {
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation {
}
@MyAnnotation
static class MyContainer extends Container {
}
public static void main(String[] args) {
Container container = new MyContainer();
Container container2 = new MyContainer() {
};
System.out.println("*** not anonymous inner class:"
+ container.getClass().isAnnotationPresent(MyAnnotation.class));
System.out
.println("*** anonymous inner class:"
+ container2.getClass().isAnnotationPresent(
MyAnnotation.class));
}
}
import java.awt.Container;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
public class TestAnnotation {
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation {
}
@MyAnnotation
static class MyContainer extends Container {
}
public static void main(String[] args) {
Container container = new MyContainer();
Container container2 = new MyContainer() {
};
System.out.println("*** not anonymous inner class:"
+ container.getClass().isAnnotationPresent(MyAnnotation.class));
System.out
.println("*** anonymous inner class:"
+ container2.getClass().isAnnotationPresent(
MyAnnotation.class));
}
}
結果は、
*** not anonymous inner class:true
*** anonymous inner class:true
: