原标题:java注释文档(下)

3. 使用 @param、@return 和 @exception 说明方法

这三个标记都是只用于方法的。@param 描述方法的参数,@return 描述方法的返回值,@exception 描述方法可能抛出的异常。它们的句法如下:

@param 参数名 参数说明@return 返回值说明@exception 异常类名说明

每一个 @param 只能描述方法的一个参数,所以,如果方法需要多个参数,就需要多次使用 @param 来描述。

一个方法中只能用一个 @return,如果文档说明中列了多个 @return,则 javadoc 编译时会发出警告,且只有第一个 @return 在生成的文档中有效。

方法可能抛出的异常应当用 @exception 描述。由于一个方法可能抛出多个异常,所以可以有多个 @exception。每个 @exception 后面应有简述的异常类名,说明中应指出抛出异常的原因。需要注意的是,异常类名应该根据源文件的 import 语句确定是写出类名还是类全名。示例如下:

public class TestJavaDoc {/*** @param n a switch* @param b excrescent parameter* @return true or false* @return excrescent return* @exception java.lang.Exception throw when switch is 1* @exception NullPointerException throw when parameter n is null*/ public boolean fun(Integer n) throws Exception {

switch (n.intValue()) { case 0: break; case 1: throw new Exception("Test Only"); default: return false; } return true; }}

使用 javadoc 编译生成的文档相关部分如下图:

可以看到,上例中 @param b excrescent parameter 一句是多余的,因为参数只是一个 n,并没有一个 b 但是 javadoc 编译时并没有检查。因此,写文档注释时一定要正确匹配参数表与方法中正式参数表的项目。如果方法参数表中的参数是 a,文档中却给出对参数 x 的解释,或者再多出一个参数 i,就会让人摸不着头脑了。@exceptin 也是一样。

上例程序中并没有抛出一个 NullPointerException,但是文档注释中为什么要写上这么一句呢,难道又是为了演示?这不是为了演示描述多余的异常也能通过编译,而是为了说明写异常说明时应考运行时 (RunTime) 异常的可能性。上例程序中,如果参数 n 是给的一个空值 (null),那么程序会在运行的时候抛出一个 NullPointerException,因此,在文档注释中添加了对 NullPointerException 的说明。

上例中的 @return 语句有两个,但是根据规则,同一个方法中,只有第一个 @return 有效,其余的会被 javadoc 忽略。所以生成的文档中没有出现第二个 @return 的描述。

讲到这里,该怎么写文档注释你应该已经清楚了,下面就开始讲解 javadoc 的常用命令。

四、 javadoc命令

运行 javadoc -help 可以看到 javadoc 的用法,这里列举常用参数如下:

用法:javadoc [options] [packagenames] [sourcefiles]

选项:

javadoc 编译文档时可以给定包列表,也可以给出源程序文件列表。例如在 CLASSPATH 下有两个包若干类如下:

fancy.Editorfancy.Testfancy.editor.ECommandfancy.editor.EDocumentfancy.editor.EView

这里有两个包 (fancy 和 fancy.editor) 和5个类。那么编译时 (Windows 环境) 可以使用如下 javadoc 命令:

javadoc fancy\Test.java fancy\Editor.java fancy\editor\ECommand.java fancy\editor\EDocument.java fancy\editor\EView.java

这是给出 java 源文件作为编译参数的方法,注意命令中指出的是文件路径,应该根据实际情况改变。也可以是给出包名作为编译参数,如:

javadoc fancy fancy.editor

用浏览器打开生成文档的 index.html 文件即可发现两种方式编译结果的不同,如下图:

用第二条命令生成的文档被框架分成了三部分:包列表、类列表和类说明。在包列表中选择了某个包之后,类列表中就会列出该包中的所有类;在类列表中选择了某个类之后,类说明部分就会显示出该类的详细文档。而用第一条命令生成的文档只有两部分,类列表和类说明,没有包列表。这就是两种方式生成文档的最大区别了。

下面再来细说选项。-public、-protected、-package、-private 四个选项,只需要任选其一即可。它们指定的显示类成员的程度。它们显示的成员多少是一个包含的关系,如下表:

-d 选项允许你定义输出目录。如果不用 -d 定义输出目录,生成的文档文件会放在当前目录下。-d 选项的用法是

-d目录名

目录名为必填项,也就是说,如果你使用了 -d 参数,就一定要为它指定一个目录。这个目录必须已经存在了,如果还不存在,请在运行 javadoc 之前创建该目录。

-version 和 -author 用于控制生成文档时是否生成 @version 和 @author 指定的内容。不加这两个参数的情况下,生成的文档中不包含版本和作者信息。

-splitindex 选项将索引分为每个字母对应一个文件。默认情况下,索引文件只有一个,且该文件中包含所有索引内容。当然生成文档内容不多的时候,这样做非常合适,但是, 如果文档内容非常多的时候,这个索引文件将包含非常多的内容,显得过于庞大。使用 -splitindex 会把索引文件按各索引项的第一个字母进行分类,每个字母对应一个文件。这样,就减轻了一个索引文件的负担。

-windowtitle 选项为文档指定一个标题,该标题会显示在窗口的标题栏上。如果不指定该标题,而默认的文档标题为“生成的文档(无标题)”。该选项的用法是:

-windowtitle 标题

标题是一串没有包含空格的文本,因为空格符是用于分隔各参数的,所以不能包含空格。同 -d 类似,如果指定了 -windowtitle 选项,则必须指定标题文本。

到此为止,Java 文档和 javadoc 就介绍完了。javadoc 真的能让我们在 Java 注释上做文章——生成开发文档。

转发分享是一种美德返回搜狐,查看更多

责任编辑:

java注释 param_java注释文档(下)相关推荐

  1. XDoc 基于Java注释生成API文档

    XDoc 基于Java注释生成API文档 <!--加入maven依赖--> <dependency><groupId>com.github.treeleafj< ...

  2. 快速根据注释生成接口文档网页工具——Apidoc的使用教程

    环境: 操作系统   CentOS Linux release 7.6.1810 (Core)  64位 服务器环境   "腾讯云"服务器 1,安装Node.js的npm工具环境: ...

  3. 使用sphinx快速为你python注释生成API文档

    sphinx简介 sphinx是一种基于Python的文档工具,它可以令人轻松的撰写出清晰且优美的文档,由Georg Brandl在BSD许可证下开发.新版的Python3文档就是由sphinx生成的 ...

  4. 根据注释生成项目文档

    根据注释生成项目文档 根据文档注释,快速的生成一个文档 方便对整个项目有一个清晰的认知 生成外部文档的用法 使用默认编码生成 javadoc 源文件 -d 目标路径 可能会出现的错误 指定编码生成 j ...

  5. Word处理控件Aspose.Words功能演示:使用 Java 比较 MS Word 文档

    Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word.此 ...

  6. Java支持latex,基于Java和LaTeX的文档自动生成技术研究

    基于Java和 LaTeX 的文档 自动生成技术研究 ◆尚宝欣 徐 屹 (东北电力大学理学院,吉林 长春 132012) [摘 要]讨论了结合Java与LaTex 自动生成 PDF文档的方法.针 展名 ...

  7. Java—使用ApiDoc接口文档

    Java-使用ApiDoc接口文档 前言介绍: 之前写过 使用Swagger编写Api接口文档 ,介绍了Java怎么使用Swagger做项目的Api接口文档.也百度过现在生成Api接口文档的工具,看到 ...

  8. java基础知识 API文档 字符串基本操作 正则表达式 Object

    目录 JDK API 什么是JDK API JDk包结构 文档注释规范 文档注释 String及其常用API String是不可变对象 String常量池 内存编码及长度 String常用方法 Str ...

  9. 接口文档下的渗透测试(Swagger)

    接口文档背景 随着前后端分离架构的优势越来越明显,前后端分离的应用场景也越来越广,如今前后端分离已成为互联网项目开发的业界标准使用方式,而为了前后端程序员在实际开发中能够有统一的接口文档去调试,因此也 ...

最新文章

  1. 解决安卓微信浏览器中location.reload 或者 location.href失效的问题
  2. 1034 Head of a Gang (30 分) 【难度: 中 / 知识点: 并查集】
  3. SpringBoot+thymeleaf实现文件下载(已实践,全流程)
  4. SAP 电商云 Spartacus UI 4.1 版本的延迟加载技术介绍
  5. MATLAB拉格朗日插值
  6. css 中 float 和 clear 的作用
  7. postgresql中装gis插件_使用PostGIS_高级扩展插件使用_开发进阶_云原生数仓 AnalyticDB PostgreSQL - 阿里云...
  8. 【鲲鹏来了】手把手教你在鲲鹏上使用编程语言——Java、Python
  9. 如何在旧 Mac 或 MacBook 上安装 Chrome 操作系统?
  10. paip.输入法编程---词库多意义条目分割 python实现.
  11. cad查看_CAD干货:手把手教你如何在手机上查看CAD图纸,赶紧了解一波~
  12. Linux性能工具:系统CPU
  13. 【NVMe2.0b 8】NVMe 队列仲裁机制
  14. bit,Byte,Word,DWORD(DOUBLE WORD,DW)
  15. VScode seting.json 配置 自用
  16. mac home/end/pageup/pageDown
  17. 投稿时Cover Letter的重要性(部分体会来自导师)
  18. 机器学习实用代码汇总(你想要的这里都有)
  19. Codeforces Round #406 (Div. 1) A. Berzerk 记忆化搜索
  20. 用QUARTUS13.0自带仿真工具进行仿真

热门文章

  1. 将远程服务器获取的linkedhashMap对象转为实体类对象
  2. 面试题总结14 动态规划
  3. ofstream写不进txt文件的奇怪问题
  4. 11.字典:当索引不好用时
  5. Machine Learning - Andrew Ng on Coursera (Week 3)
  6. IntelliJ IDEA 常用设置
  7. Vue.js 自定义事件
  8. 【java开发系列】—— java输入输出流
  9. 程序员面试题精选100题(22)-整数二进制表示中1的个数[算法]
  10. 图像处理(五)双指数磨皮