Java 文档注释精通:Javadoc 工具与注释类型全解析
Java 语言支持三类注释:
| 序号 | 注释及描述 |
|---|---|
| 1 | /* text */ 编译器忽略 /* 到 */ 之间的所有内容。 |
| 2 | //text 编译器忽略 // 到行尾的所有内容。 |
| 3 | /** documentation */ 这是文档注释,通常称为 doc comment。JDK javadoc 工具在生成自动文档时使用 doc comments。 |
本章详解 Javadoc,展示如何利用 Javadoc 为 Java 代码生成有用文档。
什么是 Javadoc?
Javadoc 是随 JDK 提供的工具,用于从 Java 源代码按预定义格式生成 HTML 格式的 Java 代码文档。
下面简单示例中 /*….*/ 内为 Java 多行注释,// 前一行为单行注释:
示例
/**
* HelloWorld 程序实现仅在标准输出显示 "Hello World!" 的应用。
*
* @author Zara Ali
* @version 1.0
* @since 2014-03-31
*/
public class HelloWorld {
public static void main(String[] args) {
// 在标准输出打印 Hello, World!
System.out.println("Hello World!");
}
}
描述部分可包含所需 HTML 标签。例如下例使用 <h1>....</h1> 作为标题,<p> 用于段落换行:
示例
/**
* <h1>Hello, World!</h1>
* HelloWorld 程序实现仅在标准输出显示 "Hello World!" 的应用。
* <p>
* 程序中添加适当注释使其更友好,被视为高质量代码。
*
* @author Zara Ali
* @version 1.0
* @since 2014-03-31
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Javadoc 标签
javadoc 工具识别以下标签:
| 标签 | 描述 | 语法 |
|---|---|---|
| @author | 添加类作者 | @author name-text |
| {@code} | 以代码字体显示文本,不将文本解析为 HTML 标记或嵌套 javadoc 标签 | {@code text} |
| {@docRoot} | 表示从任意生成页面到生成文档根目录的相对路径 | {@docRoot} |
| @deprecated | 添加注释指明此 API 不应再使用 | @deprecated deprecatedtext |
| @exception | 在生成文档中添加 Throws 子标题,包含类名和描述文本 | @exception class-name description |
| {@inheritDoc} | 从 最近 可继承类或可实现接口继承注释 | 从直接父类继承注释 |
| {@link} | 插入行内链接,可见文本标签指向指定包、类或引用类成员名的文档 | {@link package.class#member label} |
| {@linkplain} | 同 {@link},但链接标签以纯文本而非代码字体显示 | {@linkplain package.class#member label} |
| @param | 在“Parameters”节添加指定参数名及描述 | @param parameter-name description |
| @return | 添加“Returns”节及描述文本 | @return description |
| @see | 添加“See Also”标题及指向参考的链接或文本条目 | @see reference |
| @serial | 用于默认可序列化字段的文档注释 | @serial field-description | include | exclude |
| @serialData | 记录 writeObject() 或 writeExternal() 方法写入的数据 | @serialData data-description |
| @serialField | 记录 ObjectStreamField 组件 | @serialField field-name field-type field-description |
| @since | 在生成文档中添加“Since”标题及指定 since-text | @since release |
| @throws | @throws 和 @exception 标签同义 | @throws class-name description |
| {@value} | 在静态字段的文档注释中使用 {@value} 时,显示该常量值 | {@value package.class#field} |
| @version | 使用 -version 选项时,在生成文档中添加“Version”子标题及指定 version-text | @version version-text |
示例
下面程序使用文档注释的几个重要标签。可根据需求使用其他标签。
AddNum 类文档将生成 HTML 文件 AddNum.html,同时也会创建名为 index.html 的主文件。
import java.io.*;
/**
* <h1>Add Two Numbers!</h1>
* AddNum 程序实现仅将两个给定整数相加并打印输出的应用。
* <p>
* <b>Note:</b> 程序中添加适当注释使其更友好,被视为高质量代码。
*
* @author Zara Ali
* @version 1.0
* @since 2014-03-31
*/
public class AddNum {
/**
* 此方法用于添加两个整数。这是
* 类方法最简单形式,仅为展示各种 javadoc 标签用法。
* @param numA 这是 addNum 方法的第一个参数
* @param numB 这是 addNum 方法的第二个参数
* @return int 返回 numA 和 numB 之和。
*/
public int addNum(int numA, int numB) {
return numA + numB;
}
/**
* 这是使用 addNum 方法的主方法。
* @param args 未使用。
* @return 无。
* @exception IOException 输入错误时。
* @see IOException
*/
public static void main(String args[]) throws IOException {
AddNum obj = new AddNum();
int sum = obj.addNum(10, 20);
System.out.println("10 和 20 的和为 :" + sum);
}
}
使用 javadoc 实用程序处理上述 AddNum.java 文件:
$ javadoc AddNum.java Loading source file AddNum.java... Constructing Javadoc information... Standard Doclet version 1.7.0_51 Building tree for all the packages and classes... Generating /AddNum.html... AddNum.java:36: warning - @return tag cannot be used in method with void return type. Generating /package-frame.html... Generating /package-summary.html... Generating /package-tree.html... Generating /constant-values.html... Building index for all the packages and classes... Generating /overview-tree.html... Generating /index-all.html... Generating /deprecated-list.html... Building index for all classes... Generating /allclasses-frame.html... Generating /allclasses-noframe.html... Generating /index.html... Generating /help-doc.html... 1 warning $
可在此查看所有生成文档 —— AddNum。若使用 JDK 1.7,javadoc 生成的 stylesheet.css 不太理想,建议从 https://docs.oracle.com/javase/7/docs/api/stylesheet.css 下载使用标准样式表。
java
- 精通 Java 运算符:类型、语法与实战示例
- Java 注释:类型、用法与最佳实践
- 精通 Java if…else:控制流全解析
- 精通 Java 增强 for 循环:语法、示例与最佳实践
- 精通 Java 字符串:创建、方法与最佳实践
- 精通 Java 接口:概念、实现与最佳实践
- 精通 Java 匿名内部类:定义、语法与实战示例
- 精通 Java Try-With-Resources:自动资源管理详解
- Java 注解详解:类型、放置位置与实战示例
- Java 断言实战指南:尽早发现 Bug 与保障代码可靠性
- 深入理解 Java Vector:用法、特性及与 ArrayList 的对比
- Java 文档注释精通:Javadoc 工具与注释类型全解析