在上一篇文章中,我们讲解了:Java中注解的定义、JDK中内置注解、第三方注解。
本文是注解系列教程中的第二篇。来看看今天主要内容:
1:注解的分类
2:元注解说明
3:自定义注解声明
一:注解的分类
注解根据运行机制、来源、功能来分:
1.1:按照运行机制来分,即时注解存在于程序的哪个阶段
源码注解(source):在源码中存在的。
如:lombak的@data注解:
编译注解(class):编译期。既是在源码和class中都有的。
JDK自带的三个注解(@Override(重写、覆盖)、@Deprecated(废弃的,过时的)、@Suppvisewarnings(压缩警告))都是编译期的注解
举例: override
运行是注解(runtime):在运行阶段任然起作用的,甚至会影响运行逻辑。
如:spring 的autowired注解:
1.2:按照来源来区分,既是注解从哪里来的
按照来源来区分分为:JDK自带的注解、第三方注解、自定义注解
如下图:
1.3:按照功能来区分:
按照功能来区分,可以分为:元注解和非元注解。如下图:
二:元注解说明
2.1:什么是元注解?
元注解是指注解的注解。JAVA中元注解主要包括以下四个:
2.2:@Target
target注解的作用:标注注解的作用域。如果有多个作用域用英文逗号进行分割
target注解作用域有哪些?
构造器、字段、局部变量、方法、包、参数、接口。具体如下图:
2.3:@Retention
retention的作用:注解的生命周期。
注解生命周期有哪些呢?
只在源码显示的souce、编译期的class、运行时候存在的runtime。如下图:
生命周期大小:
2.4:@Inherited
inherite:标识性的元注解。标识当前的注解可以由子注解继承
2.5:@Documented
documented:在生成文档的时候,会被包含
三:自定义注解的写法:
@Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented() public @interface MyAnnotation1 { public abstract String value(); }
声明:本文是由凯哥(凯哥Java)发布的Java注解学习系列教程第二篇。未经允许,不得转载
本文出处:http://www.kaigejava.com/article/detail/440
凯哥博客:www.kaigejava.com
凯哥公众号:凯哥Java(kaigejava)