标注是java语言出现的一个新特性,在实际应用中其可以部分或者全部替代传统的XML等部署描述文件。之所以要出现标注特性,是因为部署描述文件很复杂,在具体编写时很容易出错。

1.标注的简单使用:

标注在很早以前就应用于java程序的开发中,但是没有引起关注。直到作为规范在JDK5.0中发布以后,才逐渐被程序员了解,并有越来越多的框架、技术加入了标注应用。例如EJB3规范(java EE5规范的子集)为Bean类型、接口类型、资源引用、事物属性、安全性等定义了标注。JAX-WS2.0规范为Web服务提供了一组类似的标注。

标注其实就是一种标志,加上标注就等于打上了某种标记,没加就等于没有某种标记。当java语言的编译器、开发工具等其他程序在具体编译程序时,就会通过反射直到类或其他各种元素是否有标记,然后就会根据标记去实现相应功能。

2.JDK的内置标注:

在最新的JDK中,sun公司已经提供了几个内置的标记,它们分别是@Override、@Deprecated@SuppressWarnings。

(1)@Override

java.lang.Overeide被用作标注方法,主要用于子类在覆盖父类的方法名时,检测方法名称。如果方法名称正确,则不会有任何提示,否则就会提示错误。

package com.ccniit.lg.Override;public class People {    public String toString () {        return "人的名字";    }}

package com.ccniit.lg.Override;public class Student extends People{    @Override    public String toString1 () {        return "学生的名字";    }}

当上面的代码没有@Override时,该段代码不会报错。但是如果有@Override标注时,就会报错。之所以会报错,当存在@Override时,编译器就会认为该方法为继承类,会从该类的父类中查找是否有与该方法相同的方法。

@Override标注其实就相当于修饰符,与public、void等修饰符一样,其不仅可以放在方法上面,还可以放在方法的左边。如下:

@Override public String toString1 () {        return "学生的名字";    }

(2)@Deprecated

package com.ccniit.lg.Deprecated;public class People {    @Deprecated    public void sayHello () {        System.out.println("Hello");    }    public void sayHello1 () {        System.out.println("Hello");    }}

package com.ccniit.lg.Deprecated;public class TestPeople {    public static void main (String[] args) {        People people = new People();        people.sayHello();        people.sayHello1();    }}

当一个类或者一个类成员使用@Deprecated修饰时,编译器将不鼓励使用这个被标注的程序元素。而且这种修饰具有一定的“延续性”:即在代码中通过继承或者覆盖的方式使用这个过时的类型或者成员,虽然继承或者覆盖后的类型及成员并不是声明为@Deprecated的,但是编译器还是会警告的。

(3)@SuppressWarnings

java.lang.SuppressWarnings被用作标注类、属性和方法等成员,主要用于屏蔽警告。该标记与前面两个标记的最大不同就是其带有参数,并且参数可以不止一个。参数的值为警告的类型,如“已经过时的警告”的类型为deprecation,“没有使用的警告”的类型为unused,“类型不安全的警告”的类型为unchecked。

package com.ccniit.lg.SimpleAnnotation;public class SimpleAnnotation {    public static void main (String[] args) {        System.runFinalizersOnExit (true);    }}

当在命令行窗口中通过javac命令来编译上述java文件时,会出现如图所示内容:

即编译成功,但是却出现了注意的代码,如果想要查看源java文件中需要注意的地方,则可以输入-Xlint:deprecation命令参数。

如果有些程序员想要用过时的方法,但是又不想编译时出现的注意代码,就可以在代码中加入@SuppressWarnings标注,代码如下所示:

package com.ccniit.lg.SimpleAnnotation;public class SimpleAnnotation {    @SuppressWarnings("deprecation")    public static void main (String[] args) {        System.runFinalizersOnExit (true);    }}

上面代码中的@SuppressWarnings标注就是告诉java编译器不需要再提示“注意”,起到压缩警告的作用。

注意:当@SuppressWarnings的参数为多个值时,必须以数组方式为参数赋值。如:@SuppressWarnings({"deprecation","unchecked"})。