在上一篇文章中, 我们讲解了: Java 中注解的定义, JDK 中内置注解, 第三方注解.
本文是注解系列教程中的第二篇. 来看看今天主要内容:
0e5bfb282785e6d50be398c29a4d9267.PNG
1: 注解的分类
2: 元注解说明
3: 自定义注解声明
一: 注解的分类
c03d16d65e241c90e669f077a650bb64.PNG
注解根据运行机制, 来源, 功能来分:
1.1: 按照运行机制来分, 即时注解存在于程序的哪个阶段
e0c7d7da2e69a56219d73cd8be1c4454.PNG
源码注解(source): 在源码中存在的.
如: lombak 的 @data 注解:
5bea68c9466087e5e29d6a07d6243893.PNG
编译注解(class): 编译期. 既是在源码和 class 中都有的.
JDK 自带的三个注解 (@Override(重写, 覆盖),@Deprecated(废弃的, 过时的),@Suppvisewarnings(压缩警告)) 都是编译期的注解
举例: override
0362f1164684a55d250ef62a5774a78a.PNG
运行是注解(runtime): 在运行阶段任然起作用的, 甚至会影响运行逻辑.
如: spring 的 autowired 注解:
f39084e8c5e64a0834714f102eca9160.png1.2: 按照来源来区分, 既是注解从哪里来的
按照来源来区分分为: JDK 自带的注解, 第三方注解, 自定义注解
如下图:
e53b73770958773c2e330afeeb8c1007.PNG
1.3: 按照功能来区分:
按照功能来区分, 可以分为: 元注解和非元注解. 如下图:
afafe3546c589b9575096a6827d8b692.PNG
二: 元注解说明
2.1: 什么是元注解?
元注解是指注解的注解. JAVA 中元注解主要包括以下四个:
- 7ac1431ceef05b2463a25ba3da4a9cd7.PNG
- 2.2:@Target
target 注解的作用: 标注注解的作用域. 如果有多个作用域用英文逗号进行分割
target 注解作用域有哪些?
构造器, 字段, 局部变量, 方法, 包, 参数, 接口. 具体如下图:
- f04c44ad40c7473701ac705c2bbfd82d.PNG
- e6e365e0dbc15a00bebd6df6df9def1a.PNG
- 2.3:@Retention
retention 的作用: 注解的生命周期.
注解生命周期有哪些呢?
只在源码显示的 souce, 编译期的 class, 运行时候存在的 runtime. 如下图:
b19e1e745582b64fb7031b7e68f3e3c3.PNG
生命周期大小:
- 4dc0e0c220fc15304fe3ab2bb5460028.PNG
- 2.4:@Inherited
inherite: 标识性的元注解. 标识当前的注解可以由子注解继承
- de34f5ca04abc46443777f3f189cce47.PNG
- 2.5:@Documented
documented: 在生成文档的时候, 会被包含
cbb4bfcc5975de05f4f84e3ebd1f28b6.PNG
三: 自定义注解的写法:
- @Target({
- ElementType.METHOD, ElementType.FIELD
- })br/>@Retention(RetentionPolicy.RUNTIME)
- @Inheritedbr/>@Documented()
- public @interface MyAnnotation1 {
- public abstract String value();
- }
- 9c58e2d4fa3ef4e29cf4a65c78ab272d.PNG
来源: http://www.bubuko.com/infodetail-3110689.html