前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中注解学习系列教程-2

Java中注解学习系列教程-2

作者头像
凯哥Java
发布2019-06-28 14:46:42
3830
发布2019-06-28 14:46:42
举报
文章被收录于专栏:凯哥Java凯哥Java

在上一篇文章中,我们讲解了:Java中注解的定义、JDK中内置注解、第三方注解。

本文是注解系列教程中的第二篇。来看看今天主要内容:

0e5bfb282785e6d50be398c29a4d9267.png
0e5bfb282785e6d50be398c29a4d9267.png

1:注解的分类

2:元注解说明

3:自定义注解声明

一:注解的分类

c03d16d65e241c90e669f077a650bb64.png
c03d16d65e241c90e669f077a650bb64.png

注解根据运行机制、来源、功能来分:

1.1:按照运行机制来分,即时注解存在于程序的哪个阶段

e0c7d7da2e69a56219d73cd8be1c4454.png
e0c7d7da2e69a56219d73cd8be1c4454.png

源码注解(source):在源码中存在的。

如:lombak的@data注解:

5bea68c9466087e5e29d6a07d6243893.png
5bea68c9466087e5e29d6a07d6243893.png

编译注解(class):编译期。既是在源码和class中都有的。

JDK自带的三个注解(@Override(重写、覆盖)、@Deprecated(废弃的,过时的)、@Suppvisewarnings(压缩警告))都是编译期的注解

举例: override

0362f1164684a55d250ef62a5774a78a.png
0362f1164684a55d250ef62a5774a78a.png

运行是注解(runtime):在运行阶段任然起作用的,甚至会影响运行逻辑。

如:spring 的autowired注解:

f39084e8c5e64a0834714f102eca9160.png
f39084e8c5e64a0834714f102eca9160.png

1.2:按照来源来区分,既是注解从哪里来的

按照来源来区分分为:JDK自带的注解、第三方注解、自定义注解

如下图:

e53b73770958773c2e330afeeb8c1007.png
e53b73770958773c2e330afeeb8c1007.png

1.3:按照功能来区分:

按照功能来区分,可以分为:元注解和非元注解。如下图:

afafe3546c589b9575096a6827d8b692.png
afafe3546c589b9575096a6827d8b692.png

二:元注解说明

2.1:什么是元注解?

元注解是指注解的注解。JAVA中元注解主要包括以下四个:

7ac1431ceef05b2463a25ba3da4a9cd7.png
7ac1431ceef05b2463a25ba3da4a9cd7.png

2.2:@Target

target注解的作用:标注注解的作用域。如果有多个作用域用英文逗号进行分割

target注解作用域有哪些?

构造器、字段、局部变量、方法、包、参数、接口。具体如下图:

f04c44ad40c7473701ac705c2bbfd82d.png
f04c44ad40c7473701ac705c2bbfd82d.png
e6e365e0dbc15a00bebd6df6df9def1a.png
e6e365e0dbc15a00bebd6df6df9def1a.png

2.3:@Retention

retention的作用:注解的生命周期。

注解生命周期有哪些呢?

只在源码显示的souce、编译期的class、运行时候存在的runtime。如下图:

b19e1e745582b64fb7031b7e68f3e3c3.png
b19e1e745582b64fb7031b7e68f3e3c3.png

生命周期大小:

4dc0e0c220fc15304fe3ab2bb5460028.png
4dc0e0c220fc15304fe3ab2bb5460028.png

2.4:@Inherited

inherite:标识性的元注解。标识当前的注解可以由子注解继承

de34f5ca04abc46443777f3f189cce47.png
de34f5ca04abc46443777f3f189cce47.png

2.5:@Documented

documented:在生成文档的时候,会被包含

cbb4bfcc5975de05f4f84e3ebd1f28b6.png
cbb4bfcc5975de05f4f84e3ebd1f28b6.png

三:自定义注解的写法:

代码语言:javascript
复制
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented()
public @interface MyAnnotation1 {

    public abstract String value();

}
9c58e2d4fa3ef4e29cf4a65c78ab272d.png
9c58e2d4fa3ef4e29cf4a65c78ab272d.png

声明:本文是由凯哥(凯哥Java)发布的Java注解学习系列教程第二篇。未经允许,不得转载

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档