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