Java - 引用自身的注解有什么作用?

Java - what does annotation referencing itself do?

我最近偶然发现了 "Documented" Java 注解的源代码。它看起来像这样:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Documented {
}

Documented 本身中“@Documented”的用途是什么?

来自documentation:

Indicates that annotations with a type are to be documented by javadoc and similar tools by default. This type should be used to annotate the declarations of types whose annotations affect the use of annotated elements by their clients. If a type declaration is annotated with Documented, its annotations become part of the public API of the annotated elements.

@Documented 是元注释 - 它注释另一种注释类型。当注释类型由 @Documented 注释时,像 javadoc 这样的工具应该在代码中的某处 使用 时包含注释。

例如@Deprecated注解类型用@Documented注解。了解某些内容是否已弃用非常重要,因此 @Deprecated 被视为 public API 的一部分,应包含在文档中。

另一方面,@SuppressWarnings 只是编译器的一个提示,对 API 并不重要,所以它没有被 @Documented 注释。

@Documented 注释类型也对自身进行注释。基本上这只是意味着您将在文档中看到 @Documented 的任何用法。这样做是为了让您可以查看是否记录了任何注释类型。