三种基本注解:
基本的Annotation:
- @Override
- @Deprecated
- @SuppressWarnings
1、定重写父类方法:@Override
在IDE工具中,如果使用了@Override注解,而父类没有该方法,则会报错,可以避免在覆盖父类方法的时候出现一些错误。
2、标示已过时:@Deprecated
用于表示某个类(某个方法)已经过时,当使用这些过时的类或者方法的时候,IDE编辑器就会发出警告。
3、抑制编译器警告:@SuppressWarnings
用于取消显示指定的编译器警告,value的值可以是:
deprecation :使用了不赞成使用的类或方法时的警告
unchecked:执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型。
fallthrough:当 Switch 程序块直接通往下一种情况而没有 Break 时的警告
path:在类路径、源文件路径等中有不存在的路径时的警告
serial:当在可序列化的类上缺少 serialVersionUID 定义时的警告
finally:任何 finally 子句不能正常完成时的警告。
all:关于以上所有情况的警告
自定义注解:
后面再补充
元注解:
@Retention 指定注解的生命周期
其中Retention是一个枚举类:
RetentionPolicy.SOURCE : 注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃(.java文件)
RetentionPolicy.CLASS :注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期(.class文件)
RetentionPolicy.RUNTIME: 注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在(内存中的字节码)
@Target指定注解可以修饰的元素类型
ElementType.ANNOTATION_TYPE : 标记的注解可以应用于注解类型。
ElementType.CONSTRUCTOR : 标记的注解可以应用于构造函数。
ElementType.FIELD : 标记的注解可以应用于字段或属性。
ElementType.LOCAL_VARIABLE :标记的注解可以应用于局部变量。
ElementType.METHOD : 标记的注解可以应用于方法。
ElementType.PACKAGE : 标记的注解可以应用于包声明。
ElementType.PARAMETER : 标记的注解可以应用于方法的参数。
ElementType.TYPE : 标记的注解可以应用于类的任何元素。
@Documented
指定注解会被JavaDoc工具提取成文档。默认情况下,JavaDoc是不包括文档的
@Inherited
表示该注解会被子类继承,注意,仅针对类,成员属性、方法并不受此注释的影响。
@Repeatable
表示注解可以重复使用,为了解决同一个注解不能重复在同一类/方法/属性上使用的问题。