自定义注解

自定义注解:

本质:注解本质上就是一个接口,该接口默认继承 Annotation 接口。

public interface MyAnno extends java.lang.annotation.Annotation {}

格式:

元注解
public @interface 注解名 { 属性列表 }

属性:接口中的抽象方法,称为注解的属性

要求:

  1. 属性的返回值类型有下列取值:
    • 基本数据类型
    • String
    • 枚举
    • 注解
    • 以上类型的数组
  2. 定义了属性,在使用时需要给属性赋值。
    • 如果定义属性时,使用 default 关键字给属性默认初始化值,则使用时可以不给属性赋值,使用默认值。
    • 如果只有一个属性需要赋值,并且属性的名称 value,则 value 可以省略,直接定义值即可。
    • 数组赋值时,使用大括号{}包裹。当数组中只有一个值时,大括号可省略。

元注解:用于描述注解的注解

* @Target:描述注解能够作用的位置。
* @Retention:描述注解被保留的阶段(source、class、runtime 三个阶段)。
    * 一般使用 runtime阶段,会被JVM虚拟机读到。
* @Documented:描述注解是否能被抽取到api 文档中。
* @Inherited:描述注解是否被子类继承。

在程序中使用(解析)注解:获取注解中设置的属性值

* 解析注解,获取注解定义位置的对象,类、方法、属性等。
* 获取添加的注解,根据使用方法的不同,可以获取固定的注解对象或所有的注解对象
    * 其实就是在内存中生成了一个该注解接口的子类实现对象
* 调用注解对象中定义的抽象方法,获取返回值。

使用的本质:通过反射机制,及相关API 获取添加了注解的方法,并执行,案例:简单的自动测试框架的实现。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容