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:关于以上所有情况的警告。

三个综合使用的示例:

Java注解小记
 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 }
View Code

相关文章: