注解@interface不是接口是注解类,在jdk1.5之后加入的功能,使用interface自定义注解时,自动继承了java.lang.annotation.Annotation接口。
在定义注解时,不能继承其他的注解或接口。@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过default来声明参数的默认值。
@Target中的参数ElementType
该参数声明这个注解可以加在上面位置,只能在类上、或只能在方法上@component注解为例,只能加在类或接口上,不能加载方法上。
Retention中的参数RetentionPolicy
成员变量
以无形参的方法形式来声明Annotation的成员变量,方法名和返回值定义了成员变量名称和类型。
注意:定义成员变量,以方法的形式定义,而不是普通类的那种直接定义方式使用default关键字设置默认值,没设置默认值的变量则使用时必须提供,有默认值的变量使用时可以设置也可以不设置。
在使用该注解的地方,需要给属性赋值,如果属性定义时,带有default,则可以不用赋值,age可以不用赋值,而name必须赋值:
获取注解信息:
可以通过反射的方式获取注解在某个元素上的注解和其中的值,在Java反射类库reflect中,Class类实现了AnnotatedElement接口,其中包含多个获取annotation的方法。