1、注解是一种类型
注解与class、interface、Enum这些类型一样,是java中的一种类型,声明的时候使用@interface来声明。
2、元注解
@Retention
SOURCE 在源码向class文件编译时,做一些代码检查
CLASS class文件向字节码编译时,做预处理(默认值)
RUNTIME 在jvm中运行时,去动态获取注解信息,执行一定的逻辑
@Documented
@Target
ElementType.ANNOTATION_TYPE 可以给一个注解进行注解
ElementType.CONSTRUCTOR 可以给构造方法进行注解
ElementType.FIELD 可以给属性进行注解
ElementType.LOCAL_VARIABLE 可以给局部变量进行注解
ElementType.METHOD 可以给方法进行注解
ElementType.PACKAGE 可以给一个包进行注解
ElementType.PARAMETER 可以给一个方法内的参数进行注解
ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举
@Inherited
@Repeatable
3、注解的属性
注解的属性也叫做成员变量。注解只有成员变量,没有方法
注解中所有的成员对象在使用注解时都需要被使用,除了default默认值以外
4、注解提取
反射
- 确定该元素是否被注解 isAnnotationPresent
- 被注解的话获取到注解的参数值 getAnnotation、getAnnotations与getDeclaredAnnotations
- 获取注解对象的属性 getDeclaredFields
5、常用注解
@AliasFor