@documented的核心效果是使自定义注解及其属性值出现在javadoc生成的html文档中,仅影响文档输出,不改变运行时或编译行为;必须标注在注解定义上,需配合javadoc注释才能展示说明文字。

@Documented 是 Java 提供的一个元注解,它的作用是让自定义注解在生成的 Javadoc 中可见。默认情况下,自定义注解不会出现在 API 文档里,加上 @Documented 后,Javadoc 工具会把该注解及其参数一起写入生成的 HTML 文档中。
什么是 @Documented 的核心效果
它只影响 Javadoc 输出,不影响运行时行为或编译过程。只要在自定义注解声明上标注了 @Documented,所有使用该注解的地方(类、方法、字段等)在生成的文档中就会显示这个注解名称和值(如果支持参数)。
如何正确使用 @Documented
必须将 @Documented 放在自定义注解的定义上,而不是使用处。常见错误是试图在使用注解时加 @Documented,这是无效的。
- 定义注解时,在
@interface前添加@Documented - 通常搭配
@Retention(RetentionPolicy.RUNTIME)和@Target一起使用,但 @Documented 本身不依赖它们 - 如果注解有属性(如 String value()),这些属性也会出现在 Javadoc 的“Annotation Type Optional Element Summary”中
一个可直接运行的例子
下面是一个带 @Documented 的自定义注解定义:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface ApiNote {
String value() default "";
String author() default "unknown";
}
然后在类或方法上使用它:
@ApiNote(value = "用于用户登录接口", author = "zhangsan")
public class LoginController { ... }
执行 javadoc 命令后,生成的 HTML 页面中,LoginController 的类标题下方会明确显示:
@ApiNote(value = "用于用户登录接口", author = "zhangsan")
需要注意的限制
@Documented 不会自动展示注解的说明文字,除非你在注解定义里写了 Javadoc 注释。比如给 @ApiNote 加上:
/**
* 标记 API 的用途和作者信息,会在 Javadoc 中显示。
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface ApiNote { ... }
这样生成的文档里,注解类型页面还会包含这段说明。











