标注是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文件时,会出现如图所示内容:

123751199.jpg

即编译成功,但是却出现了注意的代码,如果想要查看源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"})。