一、注解概述
简单介绍:注解是插入你代码中的注释或者说是一种元数据。这些注解信息可以在编译期使用预编译工具进行处理,也可以在运行期使用java反射机制进行处理。
注解作用:1.编译器检查2.定义注解
注解优点:提高开发效率,成本低
注解缺点:耦合性大,并不利于后期维护
二、注解的定义
注解通过@interface关键字进行定义
示例:
注解的使用:最简单的注解格式@Test
常用注解:@override(表示对父类方法的覆盖,应该不陌生吧!)
三、元注解
元注解是可以注解到注解上的注解。(一种基本注解,能应用到其他注解上面)
它的作用和目的就是给其他普通的注解进行解释说明
元标签有 @Retention、@Documented、@Target、@Inherited、@Repeatable 5 种。 (其中两种比较重要)
1.@Retention(表明注解的存活时间)
取值:RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。
RetentionPolicy.CLASS 注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。
RetentionPolicy.RUNTIME 注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,
格式:
2.@Target(指定注解应用的地方)
取值:ElementType.ANNOTATION_TYPE 可以给一个注解进行注解
ElementType.CONSTRUCTOR 可以给构造方法进行注解
ElementType.FIELD 可以给属性进行注解
ElementType.LOCAL_VARIABLE 可以给局部变量进行注解
ElementType.METHOD 可以给方法进行注解
ElementType.PACKAGE 可以给一个包进行注解
ElementType.PARAMETER 可以给一个方法内的参数进行注解
ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举
格式:
四、注解的属性
注解只有成员变量,没有方法。‘
示例:
使用:
五、注解的提取
注解通过反射获取。首先可以通过 Class 对象的 isAnnotationPresent() 方法判断它是否应用 了某个注解 。
这篇博客对于注解写的特别好,不理解的推荐大家看一下。