java注解是jdk1.5以后新出的特性,注解提升了Java语言的表达能力,有效地实现了应用功能和底层功能的分离,框架/库的程序员可以专注于底层实现。
主要有三个:
@Override:用于标明此方法覆盖了父类的方法
@Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) public @interface Override { }
@Deprecated:用于标明已经过时的方法或类,源码如下
@Documented @Retention(RetentionPolicy.RUNTIME) @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE}) public @interface Deprecated { }
@SuppressWarnnings:用于有选择的关闭编译器对类、方法、成员变量、变量初始化的警告
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) @Retention(RetentionPolicy.SOURCE) public @interface SuppressWarnings { String[] value(); }
value是一个数组,可以有如下值:
- deprecation:使用了不赞成使用的类或方法时的警告;
- unchecked:执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型;
- fallthrough:当 Switch 程序块直接通往下一种情况而没有 Break 时的警告;
- path:在类路径、源文件路径等中有不存在的路径时的警告;
- serial:当在可序列化的类上缺少 serialVersionUID 定义时的警告;
- finally:任何 finally 子句不能正常完成时的警告;
- all:关于以上所有情况的警告。
三个综合使用的示例:
1 //注明该类已过时,不建议使用 2 @Deprecated 3 class A{ 4 public void A(){ } 5 6 //注明该方法已过时,不建议使用 7 @Deprecated() 8 public void B(){ } 9 } 10 11 class B extends A{ 12 13 @Override //标明覆盖父类A的A方法 14 public void A() { 15 super.A(); 16 } 17 18 //去掉检测警告 19 @SuppressWarnings({"uncheck","deprecation"}) 20 public void C(){ } 21 //去掉检测警告 22 @SuppressWarnings("uncheck") 23 public void D(){ } 24 }