程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JBuilder2005創建開發文檔之標簽介紹

JBuilder2005創建開發文檔之標簽介紹

編輯:關於JAVA

Javadoc注釋由Javadoc標簽和描述性文本組成,你可以為類、接口添加注釋,也可為構造函數、值域、方法等類中的元素添加注釋。我們來看一個帶Javadoc注釋的程序,其代碼如下所示:

代碼清單 1 Person.java

1.package javadoc;
2.import java.io.Serializable;
3./**
4.* <pre>描述人對象,擁有兩個屬性,分別是名字和性別。</pre>
5.* @see javadoc.tool.Car
6.* @version 1.0, 2005-04-12
7.* @author 陳雄華
8.* @since JDK1.3
9.*/
10.public class Person implements Serializable
11.{
12./**男性,值為{@value}*/
13.public static final int MALE = 1;
14./**女性,值為{@value}*/
15.public static final int FEMALE = 2;
16./**名字*/
17.protected String name;
18./**年齡*/
19.protected int sex;
20./**
21.* 構造一個Person實例。設定Person的名字和性別。
22.*
23.* @param name String 名字
24.* @param sex int 性別,有效值是{@link #MALE 男性}和{@link #FEMALE}
25.* @throws PersonArgumentException
26.* @see javadoc.tool.Car#drive(int)
27.*/
28.public Person(String name ,int sex) throws PersonArgumentException
29.{
30.if(sex != MALE && sex != FEMALE)
31.throw new PersonArgumentException("參數不正確");
32.this.name = name;
33.this.sex = sex;
34.}
35./**
36.* 獲取性別代號。
37.* @return int
38.* @see MALE
39.* @see FEMALE
40.*/
41.public int getSex()
42.{
43.return sex;
44.}
45./**
46.* 設置性別
47.* @param sex int
48.*/
49.public void setSex(int sex)
50.{
51.this.sex = sex;
52.}
53.}

所有的Javadoc注釋以/**開始,以*/結束,每個注釋包含一些描述性的文本及若干個Javadoc標簽。描述性的文本不但可以用平面文本,還可以使用HTML文本;Javadoc標簽一般以"@"為前綴,有的也以"{@"為前綴,以"}"結束,如{@value }。

第3~9行是類的注釋,它位於類定義代碼行前,其中第3行中的<pre></pre>標簽是HTML標簽,而第4~7行是Javadoc標簽,這段注釋映射在Javadoc文檔中的顯示樣式如下圖所示:

圖 4 類注釋

第12、14行是常量的注釋,位於常量定義代碼行之前,{@value}表示將常量的值輸出到Javadoc文檔中,第16、18是成員變量的注釋。成員常量和變量統稱為值域,它們在一起顯示:

圖 5 成員常量/變量注釋摘要

除注釋摘要以外,每個成員值域都有自己獨立的詳細注釋。

第20~27是類構造函數的注釋,構造函數有兩句描述信息,第一句是"構造一個Person實例。"第二句是"設定Person的名字和性別。",在構造函數的摘要列表中僅會顯示第一句描述信息,用"。"分隔每句描述信息。而在構造函數的詳細說明部分,則會顯示所有的描述信息。這個原則同樣適合於變量、方法的摘要,請看下面Javadoc幫助文檔中關於方法摘要及方法詳細說明,如圖26-6,圖26-7所示:

圖 6 方法摘要

圖 7 構造函數詳細描述

構造函數的Javadoc標簽比較多,@param為方法入參的說明,@throws為方法拋出異常的說明,<@link>標簽將在Javadoc文檔中提供一個鏈接到文檔中其它部分的URL。

第35~40、45~48為方法的注釋,@return為方法返回類型的說明,前面我們已經提到Javadoc文檔包含了一個方法摘要列表,每個方法還對應一個詳細描述部分,如getSex()的詳細描述如下:

圖 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.* <pre>汽車對象類。</pre>
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.* <pre>描述人對象,擁有兩個屬性,分別是名字和性別。</pre>
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標簽象一個變量,在轉換成文檔後,將替換成一個具體的值或鏈接。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved