• [Java 5.0] Annotation – @Deprecated @Override @SuppressWarnings


    惭愧 到现在没熟悉这三个注解的用法。

    英文原文:http://java.sun.com/docs/books/tutorial/java/javaOO/annotations.html

    JDK5.0 引入了一种新的元语言工具,叫“annotation”。 Annotation 提供的信息不是程序的一部分,例如,代码片断的作者,或者告诉编译器忽略特定的错误等。Annotation不会对程序的运行产生任何影响。

    Annotation的形式为:@annotation。它可以被应用到类,属性,方法等的声明处。Annotation位于他们之前,并且(通常)独立一行。它还可以带有参数,例如:
        @Author("MyName")
        class myClass {}
    或者
        @SuppressWarnings("unchecked")
        void MyMethod() {}

    自定义annotation属于高级用法,不属于本文讨论范畴。但是有三个内置的annotation你必须知道(如果你是Java程序员的话),他们是@Deprecated,@Override和@SuppressWarnings。以下列举他们对于方法的应用。

    import java.util.List;

    class Food {}
    class Hay extends Food {}
    class Animal {
    Food getPreferredFood() {
    return null;
    }
    /**
    * @deprecated document why the method was deprecated
    */
    @Deprecated
    static void deprecatedMethod() { }
    }
    class Horse extends Animal {
    Horse() {
    return;
    }
    @Override
    Hay getPreferredFood() {
    return new Hay();
    }
    @SuppressWarnings("deprecation")
    void useDeprecatedMethod() {
    Animal.deprecateMethod(); //deprecation warning - suppressed
    }
    }

    @Deprecated

    @Deprecated annotation 表示被标志的方法不应该被继续使用了,如果程序使用了deprecated的类,变量或方法,编译器将会给出警告。如果一个元素被deprecate了,那么应该如上例所示在上面的注释文档中添加deprecated的标记并给出原因。注意,文档中标记的首字母是小写d,annotation中的首字母是大写D。一般来说,你应该避免使用deprecated的方法,可以参阅相关文档了解替代方法。


    @Override

    @Override annotation是为了告诉编译器,该元素会override父类的这个元素。在上例中,override annotation表示Horse中的getPreferredFood方法将会override 父类Animal中的getPreferredFood方法。如果这步失败,编译器会报错。

    尽管Override的时候并不是必须使用这个annotation,使用它还是可以使程序逻辑更明了化,特别是当子类方法的返回值继承自父类方法的返回值。如在上例中,子类的getPreferredFood方法返回Hey的实例,父类的getPreferredFood方法返回Food的实例,其中Hey继承Food。更多信息见Overriding and Hiding Methods


    @SuppressWarnings

    @SuppressWarnings告诉编译器,此处不要报错。在上例中,useDeprecatedMethod方法调用了Animal类中的deprecated方法,通常编译器会给出警告,但是此处,被suprress了。

    每一个编译器警告属于一个类别,Java语言规范中列出了两类:“deprecation” 和“unchecked”。如果要suppress这两类警告,使用如下方式:
        @SuppressWarnings ( {"unchecked", "deprecation"} )
    参见编译器文档了解警告的类别。

    对于annotation更高级的用法是写一段程序不仅可以读java代码,并且可以处理annotations。为了达到这个目标,5.0JDK中包含了一个处理annotation的工具,称为apt。下一个版本JDK(代号Mustang)的apt将成为Java编译器的一个标准部分。更多信息,可以参见Getting Started with the Annotation Processing Tool。关于正在实现的Mustang感兴趣,可以参见Language Model APIJSR 269: Pluggable Annotation Processing API

  • 相关阅读:
    Yarn安装与配置
    线性代数入门
    min_25筛小记
    刷(shui)题记录 2022.2
    CF1292D Chaotic V.
    [WC2011]最大XOR和路径
    刷(shui)题记录 2022.3
    刷题记录2022.3[2]
    计算几何入门
    V8
  • 原文地址:https://www.cnblogs.com/shaman/p/2945413.html
Copyright © 2020-2023  润新知