TYPE | 用在类、接口(包括注解)、枚举上 | @MyAnnotation public class MyClass {} |
FIELD | 用在字段(包括枚举常量)上 | @MyAnnotation private int myField; |
METHOD | 用在方法上 | @MyAnnotation public void myMethod() {} |
PARAMETER | 用在方法(包括构造函数)上 | public MyClass(@MyAnnotation int param) {} |
CONSTRUCTOR | 用在构造函数上 | @MyAnnotation public MyClass() {} |
LOCAL_VARIABLE | 用在局部变量上 | @MyAnnotation int localVar; |
ANNOTATION_TYPE | 用在注解上 | @Retention(RetentionPolicy.RUNTIME) @interface MyAnnotation {} |
PACKAGE | 用在包上 | @MyAnnotation package com.example; |
TYPE_PARAMETER | 用在泛型类型、泛型方法、泛型构造器的类型参数上(Java 1.8引入) | public <@MyAnnotation T> void myMethod(T param) {} |
TYPE_USE | 用泛型类型参数、非泛型类型参数、返回类型、抛出类型以及实现类型等上(Java 1.8引入) | @MyAnnotation List<@MyAnnotation String> list; |