我正在使用OSGi调试应用程序,我非常清楚地知道如果缺少Annotation类,类加载器将省略该注释,如果我调用method.getAnnotations(),没有异常,但什么都不返回。
我不明白,但我确实想知道是否有任何办法让JVM抛出异常。 是否有启动JVM的选项?
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Before
public @interface Secured {
/** Priority **/ public int order() default 0;
/** Mapping **/ public String value() default "profile/validate";
/** Required **/ public boolean required() default true;
public String role() default "L1";
}
感谢。
答案 0 :(得分:3)
是您在运行时保留的注释吗?就是它将@Retetntion annotation设置为RUNTIME:
@Retention(RUNTIME)
public @interface YourAnnotation
答案 1 :(得分:2)
每个注释都有一个定义的保留。保留基本上意味着,JVM应该在哪些上下文中保存注释。可以看到不同的值here。默认行为是CLASS
保留策略,这意味着注释位于.class文件中,但JVM不使用。你想要的是RUNTIME
,我的意思很清楚。此外,还有一个SOURCE
策略,用于仅在编译期间相关的注释。
要设置保留政策,您必须使用@Retention
注释注释(元元素,任何人?),您可以阅读更多有关here的内容。
Java annotation tutorial有更多相关信息。