Target (Java Platform SE 8 )
Keywords: java.lang.annotation.Target class
Date: 2023-01-18

java.lang.annotation

## Annotation Type Target

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

  Indicates the contexts in which an annotation type is applicable. The declaration contexts and type contexts in which an annotation type may be applicable are specified in JLS 9.6.4.1, and denoted in source code by enum constants of `java.lang.annotation.ElementType`.

  If an `@Target` meta-annotation is not present on an annotation type `T` , then an annotation of type `T` may be written as a modifier for any declaration except a type parameter declaration.

  If an `@Target` meta-annotation is present, the compiler will enforce the usage restrictions indicated by `ElementType` enum constants, in line with JLS 9.7.4.

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

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

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

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

  It is a compile-time error for a single `ElementType` 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 {
              ...
          }

  Since:
    1.5
  See The Java™ Language Specification:
    9.6.4.1 @Target, 9.7.4 Where Annotations May Appear

- - ### Required Element Summary

    Required Elements
    Modifier and Type | Required Element and Description
    --- | ---
    `ElementType[]` | `value` Returns an array of the kinds of elements an annotation type can be applied to.

- - ### Element Detail

    - #### value

          public abstract ElementType[] value

      Returns an array of the kinds of elements an annotation type can be applied to.
      Returns:
        an array of the kinds of elements an annotation type can be applied to

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2023, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.