元注解

元注解 用来修饰注解的注解

在写自定义注解的时候需要考虑注解使用的目标,注解的作用范围,注解是否被继承。

@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 注解是否被显示到文档中

 

posted @ 2024-01-21 06:33  百思得其姐  阅读(26)  评论(0)    收藏  举报