元注解
元注解 用来修饰注解的注解。
在写自定义注解的时候需要考虑注解使用的目标,注解的作用范围,注解是否被继承。
@Target 修饰自定义注解的使用目标位置。通过ElementType定义
ElementType.TYPE —— 接口、类、枚举、注解
ElementType.METHOD —— 方法
ElementType.PARAMETER —— 方法参数
ElementType.FIELD —— 字段、枚举的常量
ElementType.CONSTRUCTOR —— 构造函数
ElementType.LOCAL_VARIABLE —— 局部变量
ElementType.ANNOTATION_TYPE —— 注解
ElementType.PACKAGE —— 包,用于记录java文件的package信息
@Retention 定义注解的生命周期。通过RententionPolicy定义
| 取值 | 描述 | 作用范围 | 使用场景 |
| RetentionPolicy.SOURCE | 表示注解只保留在源文件,当java文件编译成class文件,就会消失 | 源文件 | 只是做一些检查性的操作,,比如 @Override 和 @SuppressWarnings |
| RetentionPolicy.CLASS | 注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期 | class文件(默认) | 要在编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife) |
| RetentionPolicy.RUNTIME | 注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在 | 运行时 | 需要在运行时去动态获取注解信息 |
@Inherited 定义注解是否被继承。
开发过程中会通过 annotation获取类上的注解信息。如果注解上加了@Inherited注解。子类的信息中就不会包含父类的注解了。
@Documented 注解是否被显示到文档中

浙公网安备 33010602011771号