首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Javadoc标签引见

2012-12-20 
Javadoc标签介绍Javadoc注释由Javadoc标签和描述性文本组成,你可以为类、接口添加注释,也可为构造函数、值域

Javadoc标签介绍

Javadoc注释由Javadoc标签和描述性文本组成,你可以为类、接口添加注释,也可为构造函数、值域、方法等类中的元素添加注释。我们来看一个带Javadoc注释的程序,其代码如下所示:

  代码清单 1 Person.java

1. package javadoc;
2. import java.io.Serializable;
3. /**
图 4 类注释
图 5 成员常量/变量注释摘要
图 6 方法摘要
图 7 构造函数详细描述
图 8 getSex()方法的详细说明?
  通过这个实例的描述,我们对Javadoc的标签和编写有了大致的了解。注释一般置于须注释元素的前面,如类的注释位于public class Xxx类声明代码的前面,而值域的注释位于public int xxx前面。为了编写优美的Javadoc文档,你不但需要掌握简单的HTML编写知识,更需要了解Javadoc标签的知识。

  不同版本的JDK所支持的Javadoc标签是不一样的,此外还可以按标签适用的地方分成不同类型,如只适用于方法的@return标签,我们称之为方法标签,只适用于变量的@serial标签,我们称之为值域标签,以此类推。往往一个标签适用于多种地方,下表对常用Javadoc标签进行说明:?

  表 2?1 javadoc标签说明

标签说明JDK 1.1 doclet标准doclet标签类型@author 作者作者标识√ √包、 类、接口@version 版本号版本号 √ √ 包、 类、接口@param 参数名 描述方法的入参名及描述信息,如入参有特别要求,可在此注释。√ √ 构造函数、 方法@return 描述对函数返回值的注释√ √ 方法@deprecated 过期文本标识随着程序版本的提升,当前API已经过期,仅为了保证兼容性依然存在,以此告之开发者不应再用这个API。√ √ 包、类、接口、值域、构造函数、 方法@throws异常类名 构造函数或方法所会抛出的异常。 √ 构造函数、 方法@exception 异常类名 同@throws。√ √ 构造函数、 方法@see 引用查看相关内容,如类、方法、变量等。√ √ 包、类、接口、值域、构造函数、 方法@since 描述文本API在什么程序的什么版本后开发支持。 √ √ 包、类、接口、值域、构造函数、 方法{@link包.类#成员 标签} 链接到某个特定的成员对应的文档中。 √ 包、类、接口、值域、构造函数、 方法{@value} 当对常量进行注释时,如果想将其值包含在文档中,则通过该标签来引用常量的值。 √(JDK1.4)静态值域
  此外还有@serial、@serialField、@serialData、{@docRoot}、{@inheritDoc}、{@literal}、{@code} {@value arg}几个不常用的标签,由于不常使用,我们展开叙述,感兴趣的读者可以通过http://www.java.sun.com/j2se/javadoc查看它们详细的帮助信息。

  下面我们对表中所列的几个不容易理解的Javadoc标签举例说明。

  * @see

  可以通过这个标签在当前点链接到某个类、值域或方法的说明上。为了链接到当前类的值域或方法上,在值域和方法名前必须带一个#号,如:

@see #getSex()
@see #MALE
  也可以通过这个标签链接到其它类的方法、值域的说明处,假设我们创建一个称为javadoc的工程,在这个工程包括了代码清单 1的javadoc.Person.java文件,现在我们在工程中再添加一个javadoc.tool.Car类,其程序代码如下所示:

1. package javadoc.tool;
2.?
3. /**
4. * 汽车对象类。
5. * @version 1.0, 2005-04-12
6. * @author 陈雄华
7. * @since JDK1.3
8. */
9. public class Car
10. {
11.  public Car()
12.  {
13.  }?
14.  /**
15.  * 按某一方向驾驶汽车
16.  * @param direction int 方法
17.  * @param speed int 速度
18.  */
19.  public void drive(int direction,int speed)
20.  {
21.   /*do sth*/?
22.  }?
23.  /**
24.  * 朝前驾驶汽车
25.  * @param speed int 速度
26.  */
27.  public void drive(int speed)
28.  {
29.   /*do sth*/
30.  }
31. }?
  如果Person类和Car类有关系,我们就希望在Person的Javadoc文档中给出一个参见的Car文档的链接,以便开发人员能够顺藤摸瓜找到有联系的Car类的说明文档。要达到这一目的可以在Person类的注释中给出一个@see的标签。

1. /**
2. * 描述人对象,拥有两个属性,分别是名字和性别。
3. * @see javadoc.tool.Car
4. * @version 1.0, 2005-04-12
5. * @author 陈雄华
6. * @since JDK1.3
7. */?
  请看第3行的@see标签,因为Car和Person类不在同一个包中,所以必须指定类的全名,当然,如果Person.java已经通过import chapter19.tool.Car;引入Car类,则@see可以直接用使用不带包的类名:@see Car。所以Javadoc中的@see引用注释和在Java代码中引用类是相似的。

  一个更特别的应用场合是从当前文档中链接到重载方法,如Car中有两个drive()的重载方法,如何通过@see链接到不同的重载方法和注释中去呢?因为仅通过方法名无法定位,所以在方法名里面还需要指定入参的类型,请看下面的例子:?

  ·@see javadoc.tool.Car#drive(int,int):链接到drive(int direction,int speed)。

  ·@see javadoc.tool.Car#drive(int):链接到drive(int speed)。

  如果注释指定不正确,@see部分的注释将不出现在Javadoc文档中。

  * @link

  @link的@see很相似,唯一不同的是它可以嵌套在注释的描述文本中,在生成Javadoc文档时转换成一个关联链接。如Person的构造函数的注释中的@link:

1. /**
2. * 构造一个Person实例。设定Person的名字和性别。
3. *
4. * @param name String 名字
5. * @param sex int 性别,有效值是{@link #MALE }和{@link #FEMALE}
6. * @throws PersonArgumentException
7. * @see javadoc.tool.Car#drive(int)
8. */?
  带{}的Javadoc标签象一个变量,在转换成文档后,将替换成一个具体的值或链接。