软件工程实践者

统计

留言簿

友情链结

阅读排行榜

评论排行榜

J2SE 5.0的三种内置注释类型

注解(annotation)是J2SE 5.0的新内容,它给我们提供了很好的编程支持,下面介绍一下其内置的三种注解类型:

1. @Override

@Override用在多态情况下,比如:

public abstract class Animal{
   public void say(){
      System.out.println("annimal is saying");
   }
}

public class Cat extends Animal{
    @Override
    public void say(){
        System.out.println("miao, miao");
    }
}

通过@Override来告诉java编译器,say方法是重载的父类的方法,这样,当父类的say方法签名改名的话,比如增加了一些参数,那么子类的Cat中的say方法编译时就会报错,说没有正确的重载父类方法,所以,@Override可以帮我们验证程序的正确性,这一点,很有用。

2. @Deprecated

@Deprecated的意思和JavaDoc中的@deprecated注释在本质上是一样的,使用如下:

public class DeprecatedExample { 
   @Deprecated 
   public static void badMethod() { }
}

public class DeprecatedUser { 
   public static void main(String[] args){
      DeprecatedExample.badMethod(); 
   }
}

上面的代码如果用javac进行编译的话,会打印出如下信息:
Note: DeprecatedUser.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error
如果你按提示重新加-Xlint进行编译,你就可以得到错误的详细信息:
% javac -Xlint:deprecation
DeprecatedUser.java:3: warning: [deprecation] badMethod() in DeprecatedExample
has been deprecated
DeprecatedExample.badMethod();

需要注意的是:和javadoc中的@deprecated相比,@Deprecated并没有强大多少,因为它不支持参数,而@deprecated后面还可以跟字符串来给一些相关的信息,但@Deprecated做不到,但它提供了运行时自省的功能,来提示错误,所以建议@Deprecated和@deprecated同时使用。


 3. @SuppressWarnings

顾名思义,就是抑制警告信息的出现,使用如下:
public class DeprecatedExample2{ 
   @Deprecated 
   public static void foo() { }
}

public class DeprecatedUser2 { 
   @SuppressWarnings(value={"deprecation"}) 
   public static void main(String[] args) { 
      DeprecatedExample2.foo(); 
   }
}

上述@SuppressWarnings(value={"deprecation"})的作用就是抑制编译器报deprecation的错。
@SuppressWarnings(value={"deprecation"})只支持一个参数,是数组类型,所以你可以不用加value, 写成:@SuppressWarnings({"deprecation"});当想抑制多个类型的警告信息时,可写:@SuppressWarnings({"unchecked","fallthrough",deprecation"}).

注意:在JDK1.5.0 release中,@SuppressWarnings还没有得到完全支持,会在以后支持,但Sun并没有给出具体的时间。

posted on 2006-01-01 21:41 软件工程实践者 阅读(1131) 评论(2)  编辑  收藏 所属分类: Java Domain

评论

# re: J2SE 5.0的三种内置注释类型 2006-11-06 15:33 小龙虾

你的文章写得简单,易于理解.我想问你一个问题,这个问题困惑我好久了.我使用Eclipse3.2来写程序代码时,用到@Override,不能被识别,这是为什么?需要什么的配置或者引用什么的包才可以识别和运行呢!谢谢!  回复  更多评论   

# re: J2SE 5.0的三种内置注释类型 2006-11-11 16:53 gavin_lee

因为你没有打开jdk5.0进行编译  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: