Java中的@Documented注释


74

@DocumentedJava注释的目的是什么?

我看了文档,但从中得不到很多。有人可以借助一个清晰的例子指出

Answers:


65

@Documented是一个元注释。您@Documented在定义注释时应用,以确保使用注释的类在其生成的JavaDoc中显示此内容。我没有看到太多使用它,但是这里有一个例子。一个更早的问题表明它不能在Eclipse中自动运行,但是我已经在Eclipse 3.6中进行了测试,并且无论是否将@Documented注释附加到JavaDoc弹出窗口中,我的注释都会出现。

这是Spring的一个示例,该示例确保在JavaDoc中将事务方法标记为这样:

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Transactional {

45

如果我们的某些注释(例如@InWork)为@Documented,则对于每个具有该@InWork注释的类,javadoc生成的文本都将包含@InWork文本,作为对该注释的引用。

注解:

@Documented
@Inherited  // for descenders of the annotation to have the @Documented feature automatically
@Retention(RetentionPolicy.RUNTIME) // must be there
public @interface InWork {
    String value();
}

带注释的目标:

/**
 * Annotated class.
 */
@InWork(value = "")
public class MainApp {...}

Javadoc文字:

在此处输入图片说明

因此,您必须决定是否在Javadoc文本中显示注释,如果是,则设置@Documented为注释。

以上信息取自Oracle文档


请注意,在Eclipse中,您会在javadoc生成的文本中看到所有注解,无论它们是@Documented不是。

对于4.3版本仍然正确。


4

我在Java教程中找到了一个有用的页面,该页面提供了示例和更多标准注释的更多解释,其中包括的一种用法@Documented。具体来说,请看一下序言示例(文档一节)底部的Note块。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.