[Java 5.0] Annotation – @Deprecated @Override @SuppressWarnings
2013-03-06 09:11
459 查看
惭愧 到现在没熟悉这三个注解的用法。
英文原文: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。以下列举他们对于方法的应用。
尽管Override的时候并不是必须使用这个annotation,使用它还是可以使程序逻辑更明了化,特别是当子类方法的返回值继承自父类方法的返回值。如在上例中,子类的getPreferredFood方法返回Hey的实例,父类的getPreferredFood方法返回Food的实例,其中Hey继承Food。更多信息见Overriding and Hiding Methods。
每一个编译器警告属于一个类别,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 API和JSR 269: Pluggable Annotation Processing API。
英文原文: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 API和JSR 269: Pluggable Annotation Processing API。
相关文章推荐
- java中基础的Annotation--@Override @Deprecated @SuppressWarnings
- Java 注解(Annotation)@Override @Deprecated @SuppressWarnings
- JAVA 注解:SuppressWarnings、Deprecated、Override
- java 注解:SuppressWarnings、Deprecated、Override
- java 注解:SuppressWarnings、Deprecated、Override
- java 注解:SuppressWarnings、Deprecated、Override
- JDk标注@Override@Deprecated@SuppressWarnings
- Java中的注解/注释详解(Override/Deprecated/SuppressWarning)
- java高新技术之注解(@Target、@SuppressWarnings、Deprecated 、Retention )
- Java @SuppressWarnings("unchecked")
- Java凝视Override、Deprecated、SuppressWarnings具体解释
- java SuppressWarnings注解
- java程序中加入@SuppressWarnings("serial")
- Java注释Override、Deprecated、SuppressWarnings
- Java中@SuppressWarnings("unchecked")的作用
- Java注释Override、Deprecated、SuppressWarnings详解
- Java凝视Override、Deprecated、SuppressWarnings详细解释
- Java注释Override、Deprecated、SuppressWarnings详解
- java中的Java5.0 的注释 (Annotation)、多线程包1(J2SE入门25)
- Java5.0之Annotation