一、定义注解的格式
public @interface 注解名 {定义体}
二、依赖注解
@interface上面按需要注解上一些东西,包括@Retention、@Target、@Document、@Inherited四种
@Retention注解的保留策略:
@Retention(RetentionPolicy.SOURCE) // 注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
@Target注解的作用目标:
@Target(ElementType.TYPE) // 接口、类、枚举、注解
@Target(ElementType.FIELD) // 字段、枚举的常量
@Target(ElementType.METHOD) // 方法
@Target(ElementType.PARAMETER) // 方法参数
@Target(ElementType.CONSTRUCTOR) // 构造函数
@Target(ElementType.LOCAL_VARIABLE) // 局部变量
@Target(ElementType.ANNOTATION_TYPE) // 注解
@Target(ElementType.PACKAGE) // 包
@Document:.注解包含在javadoc中
@Inherited:注解可以被继承
三、注解中的方法的局限规则
- 注解方法不能有参数
- 注解方法的返回类型局限于八大基本数据类型、字符串,枚举,注解,或以上类型构成的数组。
- 注解方法可以包含默认值
- 注解可以包含与其绑定的元注解(二中的四个注解)