@Target:描述了注解修饰的对象范围,取值在java.lang.annotation.ElementType定义,常用的包括:
- METHOD:用于描述方法
- PACKAGE:用于描述包
- PARAMETER:用于描述方法变量
- TYPE:用于描述类、接口或enum类型
@Retention: 表示注解保留时间长短。取值在java.lang.annotation.RetentionPolicy中,取值为:
- RetentionPolicy.SOURCE -------------注解将被编译器丢弃
- RetentionPolicy.CLASS -------------注解在class文件中可用,但会被VM丢弃
- RetentionPolicy.RUNTIME ---------VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息
@Documented
- Documented注解的作用是:描述在使用 javadoc 工具为类生成帮助文档时是否要保留其注解信息。
@Inherited
- Inherited注解的作用是:使被它修饰的注解具有继承性(如果某个类使用了被@Inherited修饰的注解,则其子类将自动具有该注解)。