注释如何成为自身的注释?
当我在软件包java.lang.annotation
注意到一个名为@Target
的注释时,我正在浏览JDK 7的文档。 该类的标题是
@Documented @Retention(value=RUNTIME) @Target(value=ANNOTATION_TYPE) public @interface Target
现在, @Target
被用作自身的注释。 这怎么可能? @Target
甚至在声明之前就在标题中使用。 我用我编写的注释尝试了这个,并且它也有效。 谁能解释这里发生了什么?
JLS在9.6节注释类型中特别预见到了这一点:
如果注释类型声明上的注释
a
(第9.7节 )对应于注释类型T
,并且T
具有对应于java.lang.annotation.Target
的(元)注释m
,则m
必须具有其值的元素是java.lang.annotation.ElementType.ANNOTATION_TYPE
,或者是值为java.lang.annotation.ElementType.TYPE
的元素,或者发生编译时错误。
第9.6或9.7节中没有任何其他部分说明注释声明通过引用所声明的注释进行注释是非法的。