I was browsing through the documentation of JDK 7 when I noticed an annotation called @Target in package java.lang.annotation. The header of that c
The JLS specifically anticipates this, in section 9.6 Annotation Types:
If an annotation
a(§9.7) on an annotation type declaration corresponds to an annotation typeT, andThas a (meta-)annotationmthat corresponds tojava.lang.annotation.Target, thenmmust have either an element whose value isjava.lang.annotation.ElementType.ANNOTATION_TYPE, or an element whose value isjava.lang.annotation.ElementType.TYPE, or a compile-time error occurs.
No other part of section 9.6 or 9.7 says anything about it being illegal for an annotation declaration to be annotated with a reference to the annotation being declared.