Java-注解
一.定义
注解是一个标记,是用于为代码元素提供元数据,给代码添加说明信息
实质上是继承自Annotation接口的一个接口
二.作用
1.通过代码中标识的注解生成文档
2.通过代码中的标识注解进行分析
3.通过注解让编译器实现基本的编译检查
三.JDK中预定义的注解
1.@Override:检查方法是否是继承自父类或接口的,不是则报错
2.@Deprecated:表示该注解标识的内容已经过时,不推荐使用
3.@SuppressWarnings:用于压制警告
四.元注解
用于描述注解的注解称为原注解
1.@Target:
注解标注在哪里
ElementType 取值 | 作用范围 |
---|---|
TYPE | 类、接口(包括注解类型)、枚举 |
METHOD | 方法(包括普通方法、抽象方法、接口方法) |
FIELD | 成员变量(包括枚举常量) |
PARAMETER | 方法参数 |
CONSTRUCTOR | 构造方法 |
LOCAL_VARIABLE | 局部变量 |
ANNOTATION_TYPE | 注解类型本身 |
PACKAGE | 包 |
TYPE_PARAMETER | 类型参数(JDK 1.8+) |
TYPE_USE | 任何使用类型的地方(JDK 1.8+) |
2.@Retention:
注解存活时间
RetentionPolicy 取值 | 保留阶段 |
---|---|
SOURCE | 仅在源码阶段保留,编译时被丢弃 |
CLASS | 保留到字节码文件,运行时不保留 |
RUNTIME | 保留到运行时,JVM 可通过反射获取 |
3.@Documented:
注解是否进文档
4.@Inherited:
注解是否被子类继承
五.自定义注解
1.注解的格式:
元注解
public @interface 注解名称{属性列表;
}
2.属性列表(属性:注解中的方法)
属性的返回值可以为:
1.基本数据类型
2.枚举类型
3.String类型
4.注解
5.以上对应的数组
3.属性的赋值
1.定义属性时,如果使用default设置了默认值初始化值,可以不进行赋值
2.如果只有一个属性需要赋值且属性名为value,可以不申明属性名
3.对数组进行赋值时,值使用{}进行包裹,当只有一个值时,可以不使用{}