注释如何可以作为自身的注释?

Jav*_*107 6 java annotations

当我注意到@Target在包中调用的注释时,我正在浏览JDK 7的文档java.lang.annotation.该类的标题是

@Documented
@Retention(value=RUNTIME)
@Target(value=ANNOTATION_TYPE)
public @interface Target
Run Code Online (Sandbox Code Playgroud)

现在,它@Target被用作自身的注释.这怎么可能?@Target在声明之前,它在标题中使用.我用我编写的注释尝试了这个,它也运行良好.谁能解释一下这里发生了什么?

Mat*_*nry 3

JLS 在第 9.6 节“注释类型”中特别预见到了这一点中特别预见到了这一点:

\n\n
\n

如果注释类型声明上的注释a\n ( \xc2\xa79.7 )\n 对应于注释类型\n T,并且具有对应于\n 的 T(元)注释,则必须具有一个元素\n其值为,或\n 其值为mjava.lang.annotation.Targetmjava.lang.annotation.ElementType.ANNOTATION_TYPEjava.lang.annotation.ElementType.TYPE,或\n 发生编译时错误。

\n
\n\n

第 9.6 节或 9.7 节的其他部分没有说明使用对所声明的注释的引用来注释注释声明是非法的。

\n