# 注解概述
# 区分注解与注释
- 注解:给计算机说明程序
- 注释:给程序员说明程序
# 注解的功能
- 编写文档:通过注解生成 doc 文档
- 代码分析:通过注解对代码分析【使用反射】
- 编译检查:通过注解让编译器进行基本的编译检查
# 文档注解
/** + 回车
:生成文档注释@since 1.5
:jdk1.5 以后才能使用@version 1.0
:版本号为 1.0author xxx
:作者为 xxxparam a 整数
:参数 a 式整数@return 两数之和
:返回值为两数之和
# 生成文档注释
- cmd:
javadoc *.java
index,html
——> 文档注释
# 注解预设
@Override
:检测方法是否是继承父类或者父接口@Decrecated
:将该注解标记的内容已过时@supperssWarnings("all")
:取消编译器的警告
# 自定义注释
元注解 | |
public @interface 注解名称 { | |
属性列表; | |
} |
本质:一个继承了 Annotation 接口的接口
# 注解的属性
# 属性
接口中可以定义的抽象成员方法
# 要求
# 返回值
基本数据类型,String、枚举、注解、数据
// 枚举 | |
public enmu Num { | |
n1,n2; | |
} | |
Num.n1 |
# 属性
定义了属性,使用时需要给属性赋值
public @interface MyAnno { | |
int age(); | |
String name default "baozi"; //default 为默认值 | |
} | |
@MyAnno(age = 12, name = "baozi"); | |
@MyAnno(age = 12) |
如果只有一个属性 value
,则可以省略 xxx =
,直接定义值
public @interface MyAnno { | |
int value(); | |
} | |
@MyAnno(12); |
数组赋值用 {},如果只有一个值可以直接省略
# 元注解
# 概述
用于描述注解的注解
# 分类
# @Target
ElementType 取值:
TYPE
:类METHOD
:方法FIELD
:成员变量
# @Retention
Retention(RetentionPolicy.RUNTIME)
注解会保留到 class 字节码文件,会被 jvm 虚拟机读取
# @Documented
注解是否会被抽取到 api 文档
# @Inherited
注解是否被子类继承
# 解析注解
# 目的
获取注解中
# 使用
- 获取主定义的位置的对象
- 获取指定的注解
getAnnotation(Class)
- 调用注解中的抽象方法获取配置的属性值