注解
定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
注解的功能建立在反射之上,通过注解,我们可以对程序进行注释操作。
JDK1.5之后的系统中,内置了三个注解:
@Override
如果有方法需要子类覆写,那么会要求子类的方法名称,参数的类型,个数,顺序都要完全一致,然而在实际开发中,编写子类的时候很可能会由于手误导致覆写错误。
比如:
原本打算覆写toString,却由于手误写成了tostring。s由于失误写成了小写,而java是区分大小写的,所以编译器会认为tostring是一个新的方法,而不会产生编译错误。为了保证子类方法的覆写不会出错,jdk内置了@Override注解。这个注解会告诉编译器,这个方法是覆写父类的,一旦检测到子类的方法和父类不一致则会引发编译器错误:Method does not override method from its superclass
我们点进去看看@Override注解的源码,会发现RetentionPolicy.SOURCE,这说明@Override注解是一个作用在源码阶段的注解。
RetentionPolicy用来表示注解的作用周期,共有三种类型:源码阶段,class文件阶段,运行时阶段。
这个后面再讲。
public enum RetentionPolicy {
SOURCE, //源文件阶段
CLASS, //class文件阶段
RUNTIME; //运行时阶段
private RetentionPolicy() {
}
}
@Deprecated //用来表示一个方法已经过时的注解
public class Study {
//原本打算覆写toString
public String tostring() {
return "study";
}
@Override
public String toString() {
return super.toString();
}
@Deprecated //表明这个方法已经过时,不建议使用
public void function1() {
}
}
在使用的时候,会发现方法被横线给杠掉了。
这个注解只是用来告诉使用者这个方法已经不建议使用,这时候编译器会产生警告信息,因为使用者调用的方法已经过时。过时的方法还保留着主要是为了对过去使用过此方法的项目保持兼容。
@SuppressWarnings(“unsed”) //忽略警告
我们经常会发现这种定义了变量又没有使用的情况,这种情况下编译是没有问题的,但会有警告信息
如果我们要忽略这种警告信息,就要用到@SuppressWarnings注解
这里是忽略了“unused”类型的警告
除了“unused”类型,还有很多其它类型
忽略注解关键字 | 关键字含义 |
---|---|
all | to suppress all warnings (抑制所有警告) |
boxing | to suppress warnings relative to boxing/unboxing operations(抑制装箱、拆箱操作时候的警告) |
cast | to suppress warnings relative to cast operations (抑制映射相关的警告) |
dep-ann | to suppress warnings relative to deprecated annotation(抑制启用注释的警告) |
deprecation | to suppress warnings |
fallthrough | to suppress warnings relative to missing breaks in switch statements(抑制确在switch中缺失breaks的警告) |
finally | to suppress warnings relative to finally block that don’t return (抑制finally模块没有返回的警告) |
hiding | to suppress warnings relative to locals that hide variable() |
incomplete-switch | to suppress warnings relative to missing entries in a switch statement (enum case)(忽略没有完整的switch语句) |
nls | to suppress warnings relative to non-nls string literals(忽略非nls格式的字符) |
null | to suppress warnings relative to null analysis(忽略对null的操作) |
rawtypes | to suppress warnings relative to un-specific types when using generics on class params(使用generics时忽略没有指定相应的类型) |
restriction | to suppress warnings relative to usage of discouraged or forbidden references |
serial | to suppress warnings relative to missing serialVersionUID field for a serializable class(忽略在serializable类中没有声明serialVersionUID变量) |
static-access | to suppress warnings relative to incorrect static access(抑制不正确的静态访问方式警告) |
synthetic-access | to suppress warnings relative to unoptimized access from inner classes(抑制子类没有按最优方法访问内部类的警告) |
unchecked | to suppress warnings relative to unchecked operations(抑制没有进行类型检查操作的警告) |
unqualified-field-access | to suppress warnings relative to field access unqualified (抑制没有权限访问的域的警告) |
unused | to suppress warnings relative to unused code (抑制没被使用过的代码的警告) ---------- |
以上就是jdk1.5以后,系统内置的三个注解的介绍啦(#^ . ^#)