所有 javadoc 命令都只能出现于“/**”注释中
主要通过两种方式来使用 javadoc:嵌入的 HTML,或使用“文档标记”。
其中,“文档标记”(Doc tags)是一些以“@”开头的命令,置于注释行的起始处(但前导的“*”会被忽略)。
有三种类型的注释文档,它们对应于位于注释后面的元素:类、变量或者方法。也就是说, 一个类注释正好
位于一个类定义之前;变量注释正好位于变量定义之前;而一个方法定义正好位于一个方法定义的前面。如
下面这个简单的例子所示:
/** 一个类注释 */
public class docTest {
/** 一个变量注释 */
public int i;
/** 一个方法注释 */
public void f() {}
}
注意 javadoc 只能为 public(公共)和 protected (受保护)成员处理注释文档。“private”(私有)和“友好”成员的注释会被忽略,我们看不到任何输出(也可以用-private 标记包括 private 成员)。因为只有 public 和 protected 成员才可在文件之外使用。
嵌入 H T M L
的最终动机是格式化代码,不是为了哗众取宠。下面列出一个例子:
/**
* <pre>
* System.out.println(new Date());
* </pre>
*/
/**
* 您<em> 甚至</em>可以插入一个列表:
* <ol>
* <li> 项目一
* <li> 项目二
* <li> 项目三
* </ol>
*/
注意在文档注释中,位于一行最开头的星号会被 javadoc 丢弃。
同时丢弃的还有前导空格。
javadoc 会对所有内容进行格式化,使其与标准的文档外观相符。
不要将<h1> 或<hr> 这样的标题当作嵌入 HTML 使用,因为javadoc 会插入自己的标题,我们给出的标题会与之冲撞。
所有类型的注释文档——类、变量和方法——都支持嵌入 HTML。
@ s e e :引用其他类
所有三种类型的注释文档都可包含@see 标记,它允许我们引用其他类里的文档。对于这个标记, javadoc 会
生成相应的 HTML,将其直接链接到其他文档。格式如下:
@see 类名
@see 完整类名
@see 完整类名#方法名
每一格式都会在生成的文档里自动加入一个超链接的“See Also ”(参见)条目。注意 javadoc 不会检查我们指定的超链接,不会验证它们是否有效。
格式如下:
@version 版本信息
其中,“版本信息”代表任何适合作为版本说明的资料。若在 javadoc 命令行使用了“-version”标记,就会从生成的 HTML 文档里提取出版本信息。
2. @author
格式如下:
@author 作者信息
其中,“作者信息”包括您的姓名、电子函件地址或者其他任何适宜的资料。若在 javadoc 命令行使用了“-
author”标记,就会专门从生成的 HTML 文档里提取出作者信息。
变量文档只能包括嵌入的 HTML 以及@see 引用。
方法文档标记
1. @param
格式如下:
@param 参数名 说明
其中,“参数名”是指参数列表内的标识符,而“说明”代表一些可延续到后续行内的说明文字。一旦遇到一个新文档标记,就认为前一个说明结束。可使用任意数量的说明,每个参数一个。
2. @return
格式如下:
@return 说明
其中,“说明”是指返回值的含义。它可延续到后面的行内。
3. @exception
违例标记的格式如下:
@exception 完整类名 说明
其中,“完整类名”明确指定了一个违例类的名字,它是在其他某个地方定义好的。而“说明”(同样可以延续到下面的行)告诉我们为什么这种特殊类型的违例会在方法调用中出现。
这是 Java 1.1 的新特性。该标记用于指出一些旧功能已由改进过的新功能取代。该标记的作用是建议用户不必再使用一种特定的功能,因为未来改版时可能摒弃这一功能。若将一个方法标记为@deprecated,则使用该方法时会收到编译器的警告。
下面还是我们的第一个 Java 程序,只不过已加入了完整的文档注释:
//: Property.java
import java.util.*;
/** The first Thinking in Java example program.
* Lists system information on current machine.
* @author Bruce Eckel
* @author http://www.BruceEckel.com
* @version 1.0
*/
public class Property {
/** Sole entry point to class & application
* @param args array of string arguments
* @return No return value
* @exception exceptions No exceptions thrown
*/
public static void main(String[] args) {
System.out.println(new Date());
Properties p = System.getProperties();
p.list(System.out);
System.out.println("--- Memory Usage:");
Runtime rt = Runtime.getRuntime();
System.out.println("Total Memory = "
+ rt.totalMemory()
+ " Free Memory = "
+ rt.freeMemory());
}
} ///:~