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

时间:2013-07-13 11:45:17

标签: java annotations

当我注意到包@Target中有一个名为java.lang.annotation的注释时,我浏览了JDK 7的文档。该类的标题是

@Documented
@Retention(value=RUNTIME)
@Target(value=ANNOTATION_TYPE)
public @interface Target

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

1 个答案:

答案 0 :(得分:3)

JLS在section 9.6 Annotation Types中特别预见到了这一点:

  

如果注释a   (§9.7)   注释类型声明对应于注释类型   TT有一个(meta)注释m,对应于   java.lang.annotation.Target,然后m必须有一个元素   其值为java.lang.annotation.ElementType.ANNOTATION_TYPE,或   值为java.lang.annotation.ElementType.TYPE的元素,或   发生编译时错误。

第9.6或9.7节中没有任何其他部分说明注释声明通过引用正在声明的注释进行注释是非法的。