前言
- 此枚举类型的常量为Java程序中可能出现注释的语法位置提供了简单的分类。
- 这些常量用于{@link Target java.lang.annotation.Target}元注释中,以指定在何处编写给定类型的注释是合法的。
- 可能会出现注释的句法位置分为声明上下文,注释适用于声明的类型上下文和类型上下文,类型注释适用于声明和表达式中使用的类型的类型上下文。
- 常量{@link #ANNOTATION_TYPE},{@link #CONSTRUCTOR},{@link #FIELD},{@link #LOCAL_VARIABLE},{@link #METHOD},{@link #PACKAGE},{@link #PARAMETER} ,{@link #TYPE}和{@link #TYPE_PARAMETER}对应于JLS 9.6.4.1中的声明上下文。
- 例如,类型为{@code @Target(ElementType.FIELD)}进行元注释的注释只能用作字段声明的修饰符。
- 常量{@link #TYPE_USE}对应于JLS 4.11中的15个类型上下文,以及两个声明上下文:类型声明(包括注释类型声明)和类型参数声明。
- 例如,可以使用字段的类型(如果是嵌套的,参数化的或在字段的类型之内)来编写其类型用{@code @Target(ElementType.TYPE_USE)}进行元注释的注释。
- 数组类型),也可能会显示为类声明的修饰符。
- {@code TYPE_USE}常量包括类型声明和类型参数声明,以方便类型检查器的设计者使用,这些检查器为注释类型提供了语义。
- 例如,如果注释类型{@code NonNull}用{@code @Target(ElementType.TYPE_USE)}进行元注释,则可以使用{@code @NonNull} {@code类C {...}}类型检查器表示{{code C}类的所有变量都不为空,同时仍根据{@code @NonNull}是否出现在列表中,允许其他类的变量为非null或非null。
- 变量的声明。
源码
package java.lang.annotation;
public enum ElementType {
/** Class, interface (including annotation type), or enum declaration */
TYPE,
/** Field declaration (includes enum constants) */
FIELD,
/** Method declaration */
METHOD,
/** Formal parameter declaration */
PARAMETER,
/** Constructor declaration */
CONSTRUCTOR,
/** Local variable declaration */
LOCAL_VARIABLE,
/** Annotation type declaration */
ANNOTATION_TYPE,
/** Package declaration */
PACKAGE,
/**
* Type parameter declaration
*
* @since 1.8
*/
TYPE_PARAMETER,
/**
* Use of a type
*
* @since 1.8
*/
TYPE_USE
}