基本Annotation

  • @Override
  • @Deprecated
  • @SuppressWarnings
  • @SafeVarargs

@Override用来指定方法重载,它可以强制一个子类必须覆盖父类的方法。

  • 主要是帮助我们避免一些低级错误,例如:父类中有个run()方法,子类中的方法名不小心写成了runn(),在程序编译时候会报错提示。
  • 只能作用于方法,不能作用于其他程序元素。

@Deprecated用于表示某个元素(类、方法等)已过时,当其他程序使用已过时的类、方法时,编译器将会给出警告。

  • 虽然出现警告,但不影响使用,使用还是可以使用的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//父类,其中标记为test()方法是过时方法。
public class SupperClass {
@Deprecated
public void test(){
System.out.println("我是父类过时方法test");
}
}

//子类调用是,编译会警告提示,方法已经过时。
public class SonClass extends SupperClass{
public static void main(String[] args) {
SonClass sonClass = new SonClass();
sonClass.test();//提示方法已过时
}
}

@SuppressWarnings指示被该Annotation修饰的程序元素(以及该程序的所有子元素)取消显示指定的编译器警告。

  • 如果使用了带@Deprecated注释的方法,编译器将在调用此方法的地方出现警告信息。将@SuppressWarnings(“deprecation”)放在调用过时方法的那个类上,则警告信息去掉。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class SupperClass {
@Deprecated
public void test(){
System.out.println("我是父类过时方法test");
}
}

@SuppressWarnings("deprecation")//加上此注解,调用过时方法的警告提示消失
public class SonClass extends SupperClass{
public static void main(String[] args) {
SonClass sonClass = new SonClass();
sonClass.test();
}
}

SafeVarargs在声明具有模糊类型(比如:泛型)的可变参数的构造函数或方法时,Java编译器会报unchecked警告。

  • 这类情况,如果确定声明的构造函数和方法的主体不会对其varargs参数执行潜在的不安全的操作,可使用@SafeVarargs进行标记,这样的话,Java编译器就不会报unchecked警告。
  • 对于非static或非final声明的方法,不适用,会编译不通过。如果要抑制unchecked警告,可以使用@SuppressWarnings注解:@SuppressWarnings(“unchecked”)