Java注解(Annotation)称为元数据,它为我们在代码中添加信息提供了一种形式化的方法。
作用在代码中的注解有三个,分别是:
- @Override:重写标记,一般用在子类继承父类后,标注在重写过后的子类方法上。如果发现其父类,或者引用的接口没有该方法时编译报错。
- @Deprecated:这个注解进行代码注释用的比较少,不推荐
- @SuppressWarnings:这个注解的起到忽略编译器警告作用
元注解有四个,元注解是用来标志注解的注解,分别是:
1、@Retention:标识如何存储,是在代码中还是编入class文件中,或者是在运行是可以通过反射访问。
- RetentionPolicy.SOURCE:注解只保留在源文件中,当Java文件编译成class文件的时候,注解被遗弃;
- RetentionPolicy.CLASS:注解被保留在class文件中,但JVM加载class文件的时候被遗弃,这是默认的生命周期;
- RetentionPolicy.RUNTIME:注解不仅被报错到class文件中,JVM加载class文件之后,依然存在;
2、@Documented:标记这些注解是否包含在JavaDoc中。
3、@Target:标记这个注解说明了Annotation类型所修饰的对象范围,Annotation可被拥有packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数),取值如下:
1 package day04;
2
3
4
5 public enum Demo02 {
6
7 TYPE,
8
9 FIELD,
10
11 METHOD,
12
13 PARAMETER,
14
15 CONSTRUCTOR,
16
17 LOCAL_VARIABLE,
18
19 ANNOTATION_TYPE,
20
21 PACKAGE,
22
23 TYPE_PARAMETER,
24
25 TYPE_USE
26
27
28
29 }
4、@Inherited:标记这个注解是继承于哪个注解类的。
从JDK1.7开始,又添加了三个额外的注解,分别是:
- @SafeVarags:在声明可变参数的构造函数或方法时,Java编译器会报Unchecked警告。使用@SafeVarargs可以忽略这些警告。
- @FunctionnalInterface:表明这个方法是一个函数式接口。
- @Repeatable:标识某注解可以在同一个声明上使用多次。
注意:注解不支持继承