Java 注解
分类
- 编译器使用 (编译即丢)
@Override
:让编译器检查该方法是否正确地实现了覆写;
@SuppressWarnings
:告诉编译器忽略此处代码产生的警告
- 由工具处理
.class
文件使用的注解
- 被编入
.class
, 但不会常驻内存
- 被一些底层库使用,一般不必处理
- (最常用) 在程序运行期能够读取的注解,它们在加载后一直存在于 JVM 中
- 一个配置了
@PostConstruct
的方法会在调用构造方法后自动被调用
(Java 提供,JVM 并不识别)
定义
- 使用
@interface
语法来定义
- 注解的参数类似无参数方法,可以用
default
设定一个默认值
@Target
: 定义 Annotation
能够被应用于源码的哪些位置
- 类或接口:
ElementType.TYPE
;
- 字段:
ElementType.FIELD
;
- 方法:
ElementType.METHOD
;
- 构造方法:
ElementType.CONSTRUCTOR
;
- 方法参数:
ElementType.PARAMETER
。
- 只有一个元素时,可以省略数组的写法????
@Retention
: 定义了 Annotation
的生命周期
- 仅编译期:
RetentionPolicy.SOURCE
;
- 仅 class 文件:
RetentionPolicy.CLASS
;(default)
- 运行期:
RetentionPolicy.RUNTIME
。(more)
@Inherited
: 子类是否可继承父类
@Repeatable
: 这个元注解可以定义 Annotation
是否可重复
Collections
References