added in API level 1

ElementType

public final enum ElementType
extends Enum<ElementType>

java.lang.Object
   ↳ java.lang.Enum<java.lang.annotation.ElementType>
     ↳ java.lang.annotation.ElementType


The constants of this enumerated type provide a simple classification of the syntactic locations where annotations may appear in a Java program. These constants are used in java.lang.annotation.Target meta-annotations to specify where it is legal to write annotations of a given type.

The syntactic locations where annotations may appear are split into declaration contexts , where annotations apply to declarations, and type contexts , where annotations apply to types used in declarations and expressions.

The constants ANNOTATION_TYPE , CONSTRUCTOR , FIELD , LOCAL_VARIABLE , METHOD , PACKAGE , PARAMETER , TYPE , and TYPE_PARAMETER correspond to the declaration contexts in JLS 9.6.4.1.

For example, an annotation whose type is meta-annotated with @Target(ElementType.FIELD) may only be written as a modifier for a field declaration.

The constant TYPE_USE corresponds to the 15 type contexts in JLS 4.11, as well as to two declaration contexts: type declarations (including annotation type declarations) and type parameter declarations.

For example, an annotation whose type is meta-annotated with @Target(ElementType.TYPE_USE) may be written on the type of a field (or within the type of the field, if it is a nested, parameterized, or array type), and may also appear as a modifier for, say, a class declaration.

The TYPE_USE constant includes type declarations and type parameter declarations as a convenience for designers of type checkers which give semantics to annotation types. For example, if the annotation type NonNull is meta-annotated with @Target(ElementType.TYPE_USE), then @NonNull class C {...} could be treated by a type checker as indicating that all variables of class C are non-null, while still allowing variables of other classes to be non-null or not non-null based on whether @NonNull appears at the variable's declaration.

Summary

Enum values

ElementType  ANNOTATION_TYPE

Annotation type declaration  

ElementType  CONSTRUCTOR

Constructor declaration  

ElementType  FIELD

Field declaration (includes enum constants)  

ElementType  LOCAL_VARIABLE

Local variable declaration  

ElementType  METHOD

Method declaration  

ElementType  PACKAGE

Package declaration  

ElementType  PARAMETER

Formal parameter declaration  

ElementType  TYPE

Class, interface (including annotation type), or enum declaration  

ElementType  TYPE_PARAMETER

Type parameter declaration 

ElementType  TYPE_USE

Use of a type 

Public methods

static ElementType valueOf(String name)
static final ElementType[] values()

Inherited methods

Enum values

ANNOTATION_TYPE

added in API level 1
public static final ElementType ANNOTATION_TYPE

Annotation type declaration

CONSTRUCTOR

added in API level 1
public static final ElementType CONSTRUCTOR

Constructor declaration

FIELD

added in API level 1
public static final ElementType FIELD

Field declaration (includes enum constants)

LOCAL_VARIABLE

added in API level 1
public static final ElementType LOCAL_VARIABLE

Local variable declaration

METHOD

added in API level 1
public static final ElementType METHOD

Method declaration

PACKAGE

added in API level 1
public static final ElementType PACKAGE

Package declaration

PARAMETER

added in API level 1
public static final ElementType PARAMETER

Formal parameter declaration

TYPE

added in API level 1
public static final ElementType TYPE

Class, interface (including annotation type), or enum declaration

TYPE_PARAMETER

added in API level 26
public static final ElementType TYPE_PARAMETER

Type parameter declaration

TYPE_USE

added in API level 26
public static final ElementType TYPE_USE

Use of a type

Public methods

valueOf

added in API level 1
public static ElementType valueOf (String name)

Parameters
name String

Returns
ElementType

values

added in API level 1
public static final ElementType[] values ()

Returns
ElementType[]