Annotation Interface Target


@Documented@Retention(RUNTIME)@Target(ANNOTATION_TYPE)public @interfaceTarget
Indicates the contexts in which an annotation interface is applicable. The declaration contexts and type contexts in which an annotation interface may be applicable are specified in JLS9.6.4.1, and denoted in source code by enum constants ofjava.lang.annotation.ElementType.

If an@Target meta-annotation is not present on an annotation interfaceT, then an annotation of typeT may be written as a modifier for any declaration.

If an@Target meta-annotation is present, the compiler will enforce the usage restrictions indicated byElementType enum constants, in line with JLS9.7.4.

For example, this@Target meta-annotation indicates that the declared interface is itself a meta-annotation interface. It can only be used on annotation interface declarations:

    @Target(ElementType.ANNOTATION_TYPE)    public @interface MetaAnnotationType {        ...    }

This@Target meta-annotation indicates that the declared class or interface is intended solely for use as a member class or interface in complex annotation interface declarations. It cannot be used to annotate anything directly:

    @Target({})    public @interface MemberInterface {        ...    }

It is a compile-time error for a singleElementType constant to appear more than once in an@Target annotation. For example, the following@Target meta-annotation is illegal:

    @Target({ElementType.FIELD, ElementType.METHOD, ElementType.FIELD})    public @interface Bogus {        ...    }

SeeJava Language Specification:
9.6.4.1 @Target
9.7.4 Where Annotations May Appear
9.7.5 Multiple Annotations of the Same Interface
Since:
1.5
  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    Returns an array of the kinds of elements an annotation interface can be applied to.
  • Element Details

    • value

      ElementType[] value
      Returns an array of the kinds of elements an annotation interface can be applied to.
      Returns:
      an array of the kinds of elements an annotation interface can be applied to