自定义注解的语法:
使用@interface定义自定义注解时,自动继承了java.lang.annitation.Annotation接口
1)@interface 用来声明一个注解
2)其中的每一个方法实际上是声明了一个配置参数
a)方法的名称就是参数的名称
b)返回值类型就是参数类型(返回值类型只能是基本类型、Class、String、enum)
c)可以通过default来声明参数的默认值
d)如果只有一个成员,一般参数名为value
注意事项:注解元素必须要有值。我们定义注解元素时,经常使用空字符串,0作为默认值。也经常使用负数(如-1)表示不存在的含义
元注解:
元注解的作用就是负责注解其他注解。在java中定义了4个标准的meta-annotation类型,他们被用来提供对其他annotation类型做说明,
这些类型和他们所支持的类在java.lang.annotation包中可以找到。
1)@Target
2)@Retention
3)@Documented
4)@Inherited
@Target:
作用:用于描述注解的使用范围(即被描述的注解可以用在什么地方)
(表格)
所修饰范围 取值 ElementType
package PACKAGE
类、接口、枚举、Annotation类型 TYPE
CONSTRUCTOR:用于描述构造器
类型成员(方法、构造方法、成员变量、枚举值) FIELD:用于描述域
METHON:用于描述方法
方法参数和本地变量 LOCAL_VARIABLE:用于描述局部变量
PARAMETER:用于描述参数
(举例)
@Target(value=ElementType.TYPE)
@Retention
作用:用于描述注解的生命周期(表示需要在什么级别保存该注解信息)
(表格)
取值RetentionPolicy 作用
SOURCE 在源文件中有效(即源文件中保留)
CLASS 在class文件中有效(即class保留)
RUNTIME 在运行时有效(即运行时保留),被加载到程序中,可以被反射机制读取