??xml version="1.0" encoding="utf-8" standalone="yes"?>
参数可以按照L序排列。下面分别就q些参数和相关的一些内容进行说明:
? Packagenames 包列表。这个选项可以是一pd的包名(用空格隔开Q,例如java.lang java.lang.reflect java.awt。不q,因ؓjavadoc不递归作用于子包,不允许对包名使用通配W;所以你必须昄地列出希望徏立文档的每一个包?br />
? Sourcefiles 源文件列表。这个选项可以是一pd的源文g名(用空格隔开Q,可以使用通配W。javadoc允许四种源文ӞcL代码文g、包描述文g、M概述文g、其他杂文g?br />
?cL代码文gQ类或者接口的源代码文件?br />
?包描q文Ӟ每一个包都可以有自己的包描述文g。包描述文g的名U必L"package.html"Q与包的.java文g攄在一赗包描述文g的内定w常是用HTML标记写的文档。javadoc执行时将自动L包描q文件。如果找刎ͼjavadoc首先对描述文g?lt;body></body>之间的内容进行处理,然后把处理结果放到该包的Package Summary面中,最后把包描q文件的W一句(紧靠<body>Q放到输出的Overview summary面中,q在语句前面加上该包的包名?br />
?M概述文gQjavadoc可以创徏一个M概述文g描述整个应用或者所有包。M概述文g可以被Q意命名,也可以放|到L位置?overview选项可以指示M概述文g的\径和名称。M概述文g的内Ҏ使用HTML标记写的文档。javadoc在执行的时候,如果发现-overview选项Q那么它首先对文g?lt;body></body>之间的内容进行处理;然后把处理后的结果放到输出的Overview summary 面的底部;最后把M概述文g中的W一句放到输出的Overview summary面的顶部?br />
?其他杂文Ӟq些文g通常是指与javadoc输出的HTML文g相关的一些图片文件、Java源代码文Ӟ.javaQ、JavaE序Q?classQ、Java程序(AppletsQ、HTML文g。这些文件必L在doc-files目录中。每一个包都可以有自己的doc-files目录。D个例子,你希望在java.awt.Button的HTML文档中用一q按钮的囄QButton.gifQ。首先,你必L囄文g攑ֈC:usersrcjavaawtdoc-files中;然后在Button.java文g中加入下面注?br />
/**
* This button looks like this:
* <img src="doc-files/Button.gif">
*/
? @files 包含文g。ؓ了简化javadoc命oQ你可以把需要徏立文档的文g名和包名攑֜一个或多个文本文g中。例如,Z化下面命令:
javadoc -d apidoc com.mypackage1 com.mypackage2 com.mypackage3
你可以徏立一个名UCؓmypackage.txt的文Ӟ其内容如下:
com.mypackage1
com.mypackage2
com.mypackage3
然后执行下面命o卛_Q?br />
javadoc -d apidoc @mypackage.txt
? options 命o行选项。javadoc使用docletsQdoclets是指用doclet API~写的程序。)来确定输出的内容和格式。命令行选项中一部分是可用于所有doclet的通用选项Q一部分是由默认的标准doclet提供的专用的选项。下面对各自一些常用的选项分别q行介绍Q?br />
通用选项Q?br />
?-1.1 生成hjavadoc 1.1版本生成的文档的外观和功能的文档。不是所有的选项都可以用?1.1选项Q具体可以用javadoc -1.1 -help察看?br />
?-help 昄联机帮助?br />
?-bootclasspath classpathlist 指定"根类"Q通常是Javaq_自带的一些类。例如java.awt.*{)的\径?br />
?-sourcepath sourcepathlist 指定包的源文件搜索\径。但是必L意,只有在javadoc命o中指定了包名的时候才可以使用-sourcepath选项。如果指定了包名Q而省略了-sourcepathQ那么javadoc使用c\径查找源文g。D例说明:假定你打ؓcom.mypackage建立文档Q其源文件的位置是C:usersrc。那么你可以使用下面的命令:
javadoc -sourcepath c:usersrc com.mypackage
?-classpath classpathlist 指定javadoc查找"引用c?的\径。引用类是指带文档的cd上它们引用的McRjavadoc搜索指定\径的所有子目录。Classpathlist可以包含多个路径Q?隔开Q。如果省?classpathQ则javadoc使用-sourcepath查找源文件和cL件。D例说明:假定你打ؓcom.mypackage建立文档Q其源文件的位置是C:usersrcQ包依赖C:userlib中的库。那么你可以使用下面的命令:
javadoc -classpath c:userlib -sourcepath c:usersrc com.mypackage
?-overview pathfilename 告诉javadoc从pathfilename所指定的文件中获取概述文档Qƈ且把它放到输出的概述面Qoverview-summary.htmlQ中。其中pathfilename是相对于-sourcepath的相对\径?br />
?-public 只显C公q以及成员?br />
?-protected 只显C受保护的和公共的类以及成员。缺省选项?br />
?-package只显C包、受保护的和公共的类以及成员?br />
?-private 昄所有类和成员?
?-doclet class 指定javadoc产生输出内容的自定义docletcR如果忽略这个选项Qjavadoc用默认的doclet产生一pdHTML文档?br />
?-docletpath classpathlist ? doclet选项相关Q制定自定义的docletcL件的路径。Classpathlist可以包含多条路径Q用;隔开Q?br />
?-verbose 在javadocq行时提供更详细的信息?br />
标准doclet专用选项Q?br />
?-author 在生成的文档中包?作?V?br />
?- d directory 指定javadoc保存生成的HTML文g的目录。省略该选项把文g保存在当前目录。Directory可以是绝对目录,也可以是相对当前目录的相对目录?br />
?-version 在生成的文档中包?版本"V?br />
?-use 为类和包生成"use"Q用法)面。这些页面描qC该类和包在javadoc命o涉及的文件中被用的情况。例如:对于l定的类CQ在C的用法页面中包含C的子c,cd为C的域Q返回变量类型ؓC的方法以及在参数中有变量cd为C的方法和构造器?br />
?-splitindex 把烦引文件按照字母顺序分为多个文件。每一个文件对应一个字母?br />
?-windowtitle title 指定输出的HTML文档的标题?br />
?-header header 指定输出的HTML文档的页眉文本?br />
?-footer footer 指定输出的HTML文档的脚注文本?br />
?-bottom text 指定输出的HTML文档底部的文本?br />
?- group groupheading packagepatten;packagepatten;… 在M概述面中按照命令的指定方式分隔各个包。例如执行下面命令:
javadoc -group "Core Packages" "java.lang*:java.util"
-group "Extension Packages" "javax.*"
java.lang java.lang.reflect java.util javax.servlet java.new
在页面中有如下l果Q?br />
Core Packages
java.lang
java.lang.reflect
java.util
Extension Packages
javax.servlet
Other Packages
java.new
?- noindex 不输出烦引文件?br />
?- help 在文件的D条中忽略help链接?br />
?- helpfile pathfilename 指定D条中的help链接所指向的帮助文件。忽略该选项Qjavadoc生成缺省的帮助文g?br />
?-stylesheetfile pathfilename 指定javadoc的HTML样式表文件的路径。忽略该选项Qjavadoc自动生一个样式表文gstylesheet.css?br />
JavaDoc文档标记
javadoc注释?/**"开始,?*/"l束Q里面可以包含普通文本、HTML标记和javadoc标记。javadoc只处理源文g中在c?接口定义、方法、域、构造器之前的注释,忽略位于其他地方的注释。D例如下:
/**
*Demo--<b>Helloworld</b>
*@author sunjl
*@version 1.0 2001/10/15
*/
public class myHelloworld
{
/**
*在main( )Ҏ中用的昄用字W串
*@see #main(java.lang.String[])
*/
static String SDisplay;
/**
*昄HelloWorld
*@param args 从命令行中带入的字符?br />
*@return ?br />
*/
public static void main(String args[])
{
SDisplay = "Hello World " ;
System.out.println( SDisplay );
}
}
使用下面命oQ?br />
javadoc -private -d doc -author -version myHelloworld.java
卛_以生成漂亮的关于myHelloworld.java的API文档了?br />
上面例子中以@开头的标记是javadoc标记。在JavaE序中正用javadoc标记是一个良好的注释习惯Q将非常有助于javadoc自动从源代码文g生成完整的格式化API文档。下面就对各U标记进行详l说明?br />
?@author name-text 指定生成文档中的"作?,从JDK/SDK 1.0开始引入。name-text可以指定多个名字Q?,"隔开Q。文档注释可以包含多个类?br />
?{@docroot} 代表产生文档的根路径Q从JDK/SDK 1.3开始引入。用法D例如?br />
/**
*see the <a href={@docroot}/copyright.html>copyright</a>
*/
假定生成文档的根目录是docQ上面注释所在的文g最后生成的文g是docutilityutl.htmlQ那?copyright"的链接会指向..copyright.html?br />
?@deprecated deprecated-text d注释Q表明不推荐使用该API?br />
?@exception class-name description @throw的同义标讎ͼ从JDK/SDK 1.0开始引入?br />
?{@link package.class#member label} 插入指向package.class#member的内嵌链接,从JDK/SDK 1.2开始引入。D例说明,假定注释中有如下文档Q?br />
/** Use the {@link #getComponentAt(int, int) getComponentAt} method. */
那么javadoc最l生成的HTML面中将有如下内?br />
Use the <a href = "Component.html#getComponentAt(int,int)" > getComponentAt </a> method.
?@param parameter-name description 描述参数Q从JDK/SDK 1.0开始引入?br />
?@return description 描述q回|从JDK/SDK 1.0开始引入?br />
?@see reference d"参见"标题Q其中有指向reference的链接或者文本项Q从JDK/SDK 1.0开始引入。@see标记有三UŞ式,下面分别说明Q?br />
Q?Q、@see "string" ?string"d文本,不生链接?br />
Q?Q、@see <a href="URL#Value">Label</a> 使用HTML标记产生链接
Q?Q、@see package.class#member Label 使用Java语言的名字package.class #member产生链接?br />
?@serial field-description 用于~省可序列化域的注释Q从JDK/SDK 1.2开始引入?br />
?@serialField field-name field-type field-description 建立SerializablecȝserialPersistentFields成员的ObjectStreamFieldlg的文档,从JDK/SDK 1.2开始引入?br />
?@serialData data-description data-description建立数据序列和类型的文档Q从JDK/SDK 1.2开始引入?br />
?@since since-text 利用since-text内容为文档增?since"标题Q从JDK/SDK 1.1开始引入?br />
?@throws class-name description 与@exception同义。用class-name和description出文档添?抛出"标题Q从JDK/SDK 1.2开始引入?br />
?@version version-text d"版权"标题Q从JDK/SDK 1.0开始引入?br />
上面介绍了标准doclet提供的所有标记。不q,需要注意这些标记的使用是有位置限制的。其中可以出现在cL者接口文档注释中的标记有Q@see?a href="mailto:%7B@link">{@link}、@since、@deprecated、@author、@version。可以出现在Ҏ或者构造器文档注释中的标记有:@see?a href="mailto:%7B@link">{@link}、@since、@deprecated、@param、@return、@throws、@exception、@serialData。可以出现在域文档注释中的有Q@see?a href="mailto:%7B@link">{@link}、@since、@desprecated、@serial、@serialField?br />
除了javadoc自n提供的标准标C外,我们可以定制自己的标记吗Q当然可以。只需要对javadoc标准的docletE序q行扩充卛_。实际上Q利用javadoc提供的doclet APIQ不仅可以扩充doclet标记Q甚臌可以改变javadoc的整个输出。ؓ了满需要,你可以javadoc输出普通文本、XML文g{。由于扩充doclet涉及到Java~程Q本文不再做深入介绍?br />
MQjavadoc提供了完整规范的API文档功能。在软g目理中,合理C用javadoc不仅可以减少开发时的文档工作量Q提高效率;而且q非常有利于来软g的修改和l护?br />
JavaDoc 书写规范Q?br />
1?File Header Comments : 每个文g都应该加上文件头标记Q包括文件名、修改历双Ӏ版权信息和附加信息。例如:
/**
* @(#)demo.java 1.00 2002/05/27
*
* Copyright (c) 2000-2002 中国q_保险股䆾有限公司 版权所?br />
* Ping An Insurance Company of China. All rights reserved.
* This software is the confidential and proprietary
* information of Ping An Insurance Company of China.
* ("Confidential Information"). You shall not disclose
* such Confidential Information and shall use it only
* in accordance with the terms of the contract agreement
* you entered into with Ping An.
*/
2、class description:cM息,概括的描q类的功能和实现?br />
/** class description
*/
3、Variable Description:描述变量的意义和取值含义?br />
/** var variable description
*/
4、Method Description:标明每个Ҏ的输入、输出参数和q回值类型,说明Ҏ变量取值的含义。相关类文档链接?br />
/** method description
* @param var signification
* @exception exception class name
* @return return_value return signification
*/
5、Association Description:兌cL档描qͼ在注释当中需要参引其它文档描q的地方Q可在相应的注释当中如下插入Q?br />
/** method description
* @param var signification
* @exception exception class name
* @return return_value return signification
* @see package.class#member label
*/
6、包描述文gQ概括描q包的功能和设计概要。ؓ每个包创Z个描q文Ӟ命名为package.htmlQ与包的java文g攑֜一赗?br />
注:javadoc生成文档Ӟ会将该html文g的第一句放在package summary中,而把整个内容攑֜Overview summary?/p>