2 . 8 . 1 注释文档

对于Java 语言,最体贴的一项设计就是它并没有打算让人们为了写程序而写程序——人们也需要考虑程序的文档化问题。对于程序的文档化,最大的问题莫过于对文档的维护。若文档与代码分离,那么每次改变代码后都要改变文档,这无疑会变成相当麻烦的一件事情。解决的方法看起来似乎很简单:将代码同文档“链接”起来。为达到这个目的,最简单的方法是将所有内容都置于同一个文件。然而,为使一切都整齐划一,还必须使用一种特殊的注释语法,以便标记出特殊的文档;另外还需要一个工具,用于提取这些注释,并按有价值的形式将其展现出来。这些都是Java必须做到的。用于提取注释的工具叫作javadoc。它采用了部分来自Java 编译器的技术,查找我们置入程序的特殊注释标记。它不仅提取由这些标记指示的信息,也将毗邻注释的类名或方法名提取出来。这样一来,我们就可用最轻的工作量,生成十分专业的程序文档。

javadoc 输出的是一个HTML 文件,可用自己的Web 浏览器查看。该工具允许我们创建和管理单个源文件,并生动生成有用的文档。由于有了jvadoc,所以我们能够用标准的方法创建文档。而且由于它非常方便,所以我们能轻松获得所有Java 库的文档。

2 . 8 . 2 具体语法

所有javadoc 命令都只能出现于“/**”注释中。但和平常一样,注释结束于一个“*/”。主要通过两种方式来使用javadoc:嵌入的HTML,或使用“文档标记”。其中,“文档标记”(Doc tags)是一些以“@”开头的命令,置于注释行的起始处(但前导的“*”会被忽略)。

有三种类型的注释文档,它们对应于位于注释后面的元素:类、变量或者方法。也就是说,一个类注释正好位于一个类定义之前;变量注释正好位于变量定义之前;而一个方法定义正好位于一个方法定义的前面。如下面这个简单的例子所示:

/** 一个类注释 */

public class docTest {

/** 一个变量注释 */

public int i;

/** 一个方法注释 */

public void f() {}

}

注意javadoc 只能为public(公共)和protected(受保护)成员处理注释文档。“private”(私有)和“友好”(详见5 章)成员的注释会被忽略,我们看不到任何输出(也可以用-private 标记包括private 成员)。这样做是有道理的,因为只有public和protected 成员才可在文件之外使用,这是客户程序员的希望。然而,所有类注释都会包含到输出结果里。上述代码的输出是一个HTML 文件,它与其他Java 文档具有相同的标准格式。因此,用户会非常熟悉这种格式,可在您设计的类中方便地“漫游”。设计程序时,请务必考虑输入上述代码,用javadoc 处理一下,观看最终HTML 文件的效果如何。

2 . 8 . 3 嵌入H T M L

javadoc 将HTML 命令传递给最终生成的HTML 文档。这便使我们能够充分利用HTML 的巨大威力。当然,我们的最终动机是格式化代码,不是为了哗众取宠。下面列出一个例子:

/**

* <pre>

* System.out.println(new Date());

* </pre>

*/

亦可象在其他Web 文档里那样运用HTML,对普通文本进行格式化,使其更具条理、更加美观:

/**

* 您<em>甚至</em>可以插入一个列表:

* <ol>

* <li> 项目一

* <li> 项目二

* <li> 项目三

* </ol>

*/

注意在文档注释中,位于一行最开头的星号会被javadoc 丢弃。同时丢弃的还有前导空格。javadoc 会对所有内容进行格式化,使其与标准的文档外观相符。不要将<h1>或<hr>这样的标题当作嵌入HTML 使用,因为javadoc会插入自己的标题,我们给出的标题会与之冲撞。所有类型的注释文档——类、变量和方法——都支持嵌入HTML。

2 . 8 . 4 @ s e e :引用其他类

所有三种类型的注释文档都可包含@see 标记,它允许我们引用其他类里的文档。对于这个标记,javadoc 会生成相应的HTML,将其直接链接到其他文档。格式如下:

@see 类名

@see 完整类名

@see 完整类名#方法名

每一格式都会在生成的文档里自动加入一个超链接的“See Also”(参见)条目。注意javadoc 不会检查我们指定的超链接,不会验证它们是否有效。

2 . 8 . 5 类文档标记

随同嵌入HTML 和@see 引用,类文档还可以包括用于版本信息以及作者姓名的标记。类文档亦可用于“接口”目的(本书后面会详细解释)。

1. @version

格式如下:

@version 版本信息

其中,“版本信息”代表任何适合作为版本说明的资料。若在javadoc 命令行使用了“-version”标记,就会从生成的HTML 文档里提取出版本信息。

2. @author

格式如下:

@author 作者信息

其中,“作者信息”包括您的姓名、电子函件地址或者其他任何适宜的资料。若在javadoc 命令行使用了“-author”标记,就会专门从生成的HTML 文档里提取出作者信息。

可为一系列作者使用多个这样的标记,但它们必须连续放置。全部作者信息会一起存入最终HTML 代码的单独一个段落里。

2 . 8 . 6 变量文档标记

变量文档只能包括嵌入的HTML 以及@see 引用。

2 . 8 . 7 方法文档标记

除嵌入HTML 和@see 引用之外,方法还允许使用针对参数、返回值以及违例的文档标记。

1. @param

格式如下:

@param 参数名 说明

其中,“参数名”是指参数列表内的标识符,而“说明”代表一些可延续到后续行内的说明文字。一旦遇到一个新文档标记,就认为前一个说明结束。可使用任意数量的说明,每个参数一个。

2. @return

格式如下:

@return 说明

其中,“说明”是指返回值的含义。它可延续到后面的行内。

3. @exception

有关“违例”(Exception)的详细情况,我们会在第9 章讲述。简言之,它们是一些特殊的对象,若某个方法失败,就可将它们“扔出”对象。调用一个方法时,尽管只有一个违例对象出现,但一些特殊的方法也许能产生任意数量的、不同类型的违例。所有这些违例都需要说明。所以,违例标记的格式如下:

@exception 完整类名 说明

其中,“完整类名”明确指定了一个违例类的名字,它是在其他某个地方定义好的。而“说明”(同样可以延续到下面的行)告诉我们为什么这种特殊类型的违例会在方法调用中出现。

4. @deprecated

这是Java 1.1 的新特性。该标记用于指出一些旧功能已由改进过的新功能取代。该标记的作用是建议用户不必再使用一种特定的功能,因为未来改版时可能摒弃这一功能。若将一个方法标记为@deprecated,则使用该方法时会收到编译器的警告。

2 . 8 . 8 文档示例

下面还是我们的第一个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());}
}

采用了我自己的方法:将一个“:”作为特殊的记号,指出这是包含了源文件名字的一个注释行。最后一行也用这样的一条注释结尾,它标志着源代码清单的结束。这样一来,可将代码从本书的正文中方便地提取出来,并用一个编译器检查。

转载于:https://www.cnblogs.com/jianfengyun/articles/4911899.html

2 . 8 注释和嵌入文档相关推荐

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

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

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

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

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

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

  4. word文档里怎么嵌入文档_如何在Microsoft Word文档中嵌入字体

    word文档里怎么嵌入文档 When you email someone a copy of your Word document or PowerPoint presentation and the ...

  5. 一个困扰许久的Word嵌入文档问题(求助)

    最近碰到个Word问题,研究了很久,一直没能解决,看各位读者朋友,能不能提供一些更好的解决方案. 软件信息:Microsoft Word 2016(正式版) (1)操作 将某个word或者excel文 ...

  6. 使用sphinx为python注释生成docAPI文档

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

  7. java文档注释生产api没有注释_一个神奇的没有springboot注释的api文档生成器---JApiDocs...

    入门 支持JDK:1.8+ 快速开始 第一步:添加依赖 maven: io.github.yedaxia japidocs 1.4.3 gradle: compile 'io.github.yedax ...

  8. java 接口文档工具_一款Java基于注释的接口文档生成工具

    一. 痛点 你还在手动维护接口文档嘛,花一个下午不停的复制粘贴代码里面的注释 接口字段变动,还得去更新文档,更新不及时导致文档不同步 或者你使用了swagger之类的基于注解,依靠运行时的文档工具,看 ...

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

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

  10. apiDoc构建源代码注释的接口文档

    RESTful web API Documentation Generator. http://apidocjs.com 入门 前言 本文档中的所有示例都使用Javadoc-Style(可用于C#,G ...

最新文章

  1. android 常驻进程
  2. 荣耀20搭载鸿蒙,荣耀20系列刚发布,搭载鸿蒙系统新机来袭,余承东已准备好!...
  3. java 将一个非空文件夹拷贝到另一个地方
  4. vscode终端不识别python_VSCode无法识别我的已安装Python包
  5. 新政重塑教育格局——中国教育发展报告2021
  6. Unix下C程序内存泄露检测工具:valgrind的安装使用
  7. sql server 提取汉字/数字/字母的方法
  8. matlab排课方案,求助matlab大神,学校的课程安排太骚了,我们压根就不用学matlab...
  9. 使用Go编译为可执行文件(windows/linux)
  10. Effective Java 枚举和注解 第30条:用 enum 代替 int 常量
  11. 代码检查工具!从 TSLint 到 ESLint
  12. 《人类染色体与染色体病》学习笔记
  13. 海门中等专业学校计算机,江苏海门中等专业学校2021年有哪些专业
  14. Photoshop-图层相关概念-LayerComp-Layers-移动旋转复制图层-复合图层
  15. 平台软件每日构建总结
  16. linux怎么下载vi,Linux下Vim的使用
  17. jq jqprint 设置页脚_jQuery 插件 jqprint 实现浏览器页面打印和设置页眉页脚
  18. 日本国宝级匠人新津春子
  19. (esp32+MQTT+云服务器+MySQL)实现物联网温湿度数据采集到云端数据库MySQL
  20. 读史的三个境界[同人于野]zt

热门文章

  1. 清理Windows.edb文件释放C盘空间(原创)
  2. 让serialversionUID自动生成方法
  3. 阿里27个炸天的开源项目,值得收藏!
  4. 我的天!你竟然不会用IDEA远程调试Tomcat...
  5. 利用Github探测发现特斯拉API请求漏洞
  6. 中国IT行业薪资:与销售相比,程序员真得很“穷”
  7. 5 分钟掌握智联招聘网站爬取并保存到 MongoDB 数据库
  8. 性能优化的常见模式及趋势
  9. 浅谈web架构之架构设计
  10. 后悔当初没考研。。。