一、注解样式
@ 注解名 ,就是注解
例如:@Override,用在重写的方法上面
二、注解有什么用?
- 注解是一种特殊的注释。
- 代码基本的注释。不仅可以给人以说明解释作用
- 也可以给另一段代码读取,提供相关的信息。
- 例如: @Override,
- 程序员看到它,就知道这个方法是重写父类或父接口的方法。
- 编译器(javac.exe程序)看到它,就会对这个方法进行严格的格式校验,按照“重写”的要求进行校验。
三、元注解(4个)
1、定义
在声明注解时,加在注解上面的注解称为元注解。
2、具体作用及对应注解
- @Target:限定注解使用位置(10个位置)
- @Retention:标注注解的生命周期(也叫保持性策略—3个)
- @Documented:标记这个注解可以被Javadoc.exe工具生成到API帮助文档中
- @Inherited:用于注解声明时表示该注解可以被子类继承
四、注解生命周期(Retention详解)
1、注解的生命周期有三个阶段:SOURCE,CLASS,RUNTIME
- SOURCE:源代码,源代码中这个注解存在,编译后这个注解忽略了
- CLASS:字节码阶段,源代码和字节码中这个注解都有,但是一旦被加载到内存,这个注解就忽略了
- RUNTIME:无论是源代码,还是字节码,甚至是加载后的JVM内存,这个注解都仍然存在。
2、注意事项
- 注解的生命周期用RetentionPolicy枚举类型的三个常量对象表示。(以上三个)
- 在声明注解时,需要指定注解的生命周期,否则默认是SOURCE阶段。
- 如果要确保这个注解在反射阶段仍然可以被读取到,需要标记它的生命周期是RetentionPolicy.RUNTIME。
五、注解的使用位置(@Target详解)
TYPE(类/接口/枚举声明的上面),
FIELD(成员变量上),
METHOD(方法上)
PARAMETER(形参上)
CONSTRUCTOR(构造器),
LOCAL_VARIABLE(局部变量上),
ANNOTATION_TYPE(注解声明上),
PACKAGE(包上),
TYPE_PARAMETER(泛型声明上),
TYPE_USE(泛型使用上)
(ps:整理不易,就想要个赞,给点鼓励吧,孩子想坚持下去)