Java注解(Annotation)称为元数据,它为我们在代码中添加信息提供了一种形式化的方法。注解是JDK1.5引入的,Java有一套注解,共有7个,3个在Java.lang中,4个在java.long.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:标识某注解可以在同一个声明上使用多次。
注意:注解不支持继承