一、注解
二、三种JDK内置的基本注解
1、@Override
表示该方法是重写的父类方法。
为什么要写@Override?
其实方法前不写@Override是ok的,并且仍然是重写了父类方法。However!如果方法前有@Override注解,编译器就会去检查该方法是否真的是重写父类的方法,如果不是(因为这相当于是子类自己的方法,不是重写父类的),则会编译报错。说白了,@Override起着检查语法的作用称为源码中的Override是这样的:(@interface不是接口,而是注解类,是jdk1.5之后加入的;Override是注解,Target是修饰注解的注解,称为元注解)
Override注解的源码:
@Target(ElementType.METHOD) //这行表示注解能修饰的元素类型,Override的Target ElementType是Method
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
2、@Deprecated
表示某个方法、类、包、参数等已经过时。过时不代表不能用,只是不推荐使用。
为什么要写@Deprecated?
用于新旧版本的兼容和过渡。比如从jdk8升级到jdk11,可以通过@Deprecated注解发现过时方法,然后一步步修改升级到jdk11。
Deprecated注解的源码:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD(属性), LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE(可以理解为类)})
public @interface Deprecated {
}
2、@SupressWarnings
抑制(不显示)编译器的警告。该注解的作用范围与它放的地方有关,例如放在main方法上,抑制警告的范围就是main方法;放在class上,抑制警告的范围就是该class;
为什么要写@SupressWarnings?
当不想看到编译器警告信息的时候,就可以用@SupressWarnings注解。
Tips:在@SupressWarnings{""}的{""}中,可以写入你希望抑制(不显示)的警告信息。
(该图只列举了部分)
SupressWarnings注解的源码:
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, MODULE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value(); //该注解类有数组String[] value(); 所以可以选择要抑制的警告类型,对应了@SupressWarnings{""}的{""}
}
三、元注解
用于修饰注解的注解。
@Retention元注解:
@Target元注解:
@Documented元注解:
@Inherited元注解: