java - 如何使用 CLASS 的 Java 注释保留策略

标签 java annotations

我正在使用注释为我正在发布的 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/

相关文章:

java - Swagger 注释以获取授权按钮

java - 如何保存使用我的注释的元素?

java - 如何用java读取HDD SMART

java - JAXRS 的 GET 方法的多个参数

java - 用 proguard 混淆文件名

python - 图表上的烦人日期

java - Struts2注释(约定插件)

java - 用户使用 JPA 生成的查询

java - 仅具有垂直滚动的 JPanel 和 JScrollPane

iphone - 如何旋转MKMapView并保持Annotation和 View 不旋转?