快速业务通道

在Eclipse 3.1中体验J2SE 5.0的新特性 第二部分 :注释类型 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
名称,在这里例子中输入TODO, 点击Finish, 图2 中的注释就生成了。

图1 创建注释向导

在Eclipse 3.1中体验J2SE 5.0的新特性 第二部分 :注释类型 - 编程入门网

图2 注释向导生成的代码

在Eclipse 3.1中体验J2SE 5.0的新特性 第二部分 :注释类型 - 编程入门网

2.2.1注释的类型

从上面的例子中,我们可以看出,按照使用者所需要传入的参数数目, 注释 (Annotation)的类型可以分为三种。

第一种是标记注释类型:

标记注释(Marker)是最简单的注释, 不需要定义任何域。下面要介绍的Override和 Deprecated都是标记类型的。当然,如果一个注释类型提供了所有域的缺省值,那么这个 注释类型也可以认为是一个注释类型。使用标记类型的语法很简单。

清单7 标记注释的用法

@MarkerAnnotation

第二种是单值注释类型:单值注释类型只有一个域。语法也很简单:

清单8 单值注释的用法

@SingleValueAnnotation("some value")

在Eclipse 3.1中体验J2SE 5.0的新特性 第二部分 :注释类型(3)

时间:2011-04-02 IBM 邹青 吴嫣 吴疆

第三种是全值注释类型。全注释类型其实并不算是一个真正的类型,只是使用注释类 型完整的语法:

清单9 全值注释的用法

@MultipleValueAnnotation(    key1=value1,    key2=value2,     key3=value3, )

2.2.2 J2SE的内建注释(build-in annotation)

在程序中不仅可以使用自己定义的注释,还可以使用J2SE5.0中内建的注释类型。下面 我们就详细来介绍J2SE5.0提供的注释类型。J2SE 5.0中预定义了三种注释注释类型:

Override :java.lang.Override 表示当前的方法重写了父类的某个方法,如果父类 的对应的方法并不存在,将会发生编译错误。

Deprecated:java.lang.Deprecated 表示 并不鼓励使用当前的方法或者域变量。

SuppressWarnings: java.lang.SuppressWarnings关闭编译器告警,这样,在编译1.5 之前的代码的时候,不会出现大量不关心的无关的告警。

下面举一个使用Override的例子。Override这个注释类型在使用模板方法(Template Method,图2)非常有用。熟悉设计模式的读者们一定知道,模板方法中通常定义了抽象 类,并且这个抽象类中定义了主要的控制流。子类就是通过重写父类中控制流中所调用的 方法来实现自己的逻辑。有的时候,父类会将这些方法定义为抽象方法,但是有的时候也 会提供缺省实现。在后者的情况下,子类可以不实现这个方法。

这样就带来一个问题,如果你希望在子类中重写这个方法,但是无意中写错了方法的 名字,这个错误是很难被发现的。因为你希望重写的这个方法,会被编译器当作一个新的 方法而不是重写父类的方法。而现在使用@Override,这个担心就是不必要的。如果你拼 错了你希望重写的方法,编译器会报错,告诉你父类没有相应的方法。

图2 模板方法的类图

在Eclipse 3.1中体验J2SE 5.0的新特性 第二部分 :注释类型 - 编程入门网

清单10给出了模板方法的一个例子。这个例子中有定义了两个类,SubClass和 BaseClass。其中SubClass继承了BaseClass,并且希望重写BaseClass的方法doPartII( )。然而SubClass中错误的拼写了这个方法的名称。图3显示了SubClass中的编译错误。 熟悉eclipse的读者会看到在编辑器里出现了Error Marker,说明这一行有编译错误。将 鼠标指向这行,显示了错误信息。

清单10 模板方法

public abstract class BaseClass{ //模板方法的基类 public void doWork(){ doPartI(); //先调用doPartI()方法    doPartII();//之后调用doPartII()方法 }    public abstract void doPartI();    public void doPartII(){ } } public class SubClass extend BaseClass{    public void doPartI(){ };    @Override    public void doPortII(){//拼写错误,产生编译错误    System.out.println("override the method of superclass"); } }

图3 Override应用的例子

在Eclipse 3.1中体验J2SE 5.0的新特性 第二部分 :注释类型 - 编程入门网

在Eclipse 3.1中体验J2SE 5.0的新特性 第二部分 :注释类型(4)

时间

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号