我正在使用注释为我正在发布的 API 生成文档。我是这样定义的:
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PropertyInfo {
String description();
String since() default "5.8";
String link() default "";
}
现在,当我使用反射处理类时,它工作正常。我可以获得该方法的注释列表。我遇到的问题是它只有在我实例化我正在处理的对象的新实例时才有效。我宁愿不必实例化它们来获取注释。我尝试了 RetentionPolicy.CLASS,但它不起作用。
有什么想法吗?
最佳答案
你不需要实例化一个对象,你只需要类。这是一个例子:
public class Snippet {
@PropertyInfo(description = "test")
public void testMethod() {
}
public static void main(String[] args) {
for (Method m : Snippet.class.getMethods()) {
if (m.isAnnotationPresent(PropertyInfo.class)) {
System.out.println("The method "+m.getName()+
" has an annotation " + m.getAnnotation(PropertyInfo.class).description());
}
}
}
}
关于java - 如何使用 CLASS 的 Java 注释保留策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2975261/