注解()
注解的概述
- 从 JDK5.0 开始,Java 增加了对元数据(MetaData)的支持,也就是注释(Annotation)
- Annotation 其实就是代码里的特殊标记,这些标记可以再编译、类加载、运行时被读取,并执行相应的处理。通过使用 Annotation,程序员可以再不改变原有逻辑的情况下,再资源文件中嵌入一些补充信息。
- Annotation 可以想修饰符一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明,这些信息被保存再 Annotation 的“name = value”对中。
- Annotation 能被用来为程序元素(类、方法、成员变量等)设置元数据。
基本的 Annotation(注解)
使用 Annotation 时,要在其前面增加 @ 符号,并把该 Annotation 当成一个修饰符来使用。用于修饰他支持的程序元素。
- 三个基本的 Annotation(注解):
- @Override:限定于重写父类方法,该注释只能用于方法
- @Deprecated:用于表示某个程序元素(类、方法等)已过时
- @SuppressWarmings:抑制编译器警告
import java.util.ArrayList;
import java.util.List;
public class Demo01 {
public static void main(String[] args) {
new TestB().test1();
@SuppressWarnings({"rawtypes","useued"})//抑制 rawtypes 以及 useued 警告
List list = new ArrayList();
}
}
class TestA {
public void test() {
}
}
class TestB extends TestA {
@Override//重写
public void test() {
super.test();
}
@Deprecated//过时
public void test1() {//过时的元素中会穿插一个横线
}
}
自定义 Annotation(注解)
- 定义新的 Annotation 类型使用 @interface 关键字
- Annotation 的成员变量在 Annotation 定义中以无参数方法的形式来声明。起方法名和返回值定义了该成员的名字和类型。
- 可以在定义 Annotation 的成员变量时,为其指定初始值,指定成员变量的初始值可使用 default 关键字
- 没有成员定义的 Annotation 成为标记,包含成员变量的 Annotation 成为元数据 Annotation
class TestA {
public void test() {
@TestAnnotation(id = 1,desc = "姓名")
String name;
}
}
@Target(ElementType.FIELD)//定义这个注解类是给其他类的属性做注解
@Retention(RetentionPolicy.RUNTIME)//定义注解的生命周期为 RUNTIME(生命周期为整个程序的运行周期)
@Documented//将这个注解存放到 Doc 文档中
@interface TestAnnotation {
public int id() default 0;//意为当你注解不填时,是否有默认值
public String desc() default "";
}