Java中的注解Annotation

Posted CodingDGSun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的注解Annotation相关的知识,希望对你有一定的参考价值。

基本Annotation

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

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

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

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

  • 虽然出现警告,但不影响使用,使用还是可以使用的
//父类,其中标记为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")放在调用过时方法的那个类上,则警告信息去掉。
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")

以上是关于Java中的注解Annotation的主要内容,如果未能解决你的问题,请参考以下文章

java细说 JAVA中 标注 注解(annotation)

Java:注解Annotation(元数据)

javajava中的注解(Annotation)是如何工作的?

Java annotation (注解)

java中的注解Annotation

annotation+java 入门