Java 文档注释

Java 支持三种注释方式。前两种分别是 /// /,第三种被称作说明注释,它以 /** 开始,以 */结束。

说明注释允许你在程序中嵌入关于程序的信息。你可以使用 javadoc 工具软件来生成信息,并输出到HTML文件中。

说明注释,使你更加方便的记录你的程序信息。

javadoc 标签

javadoc 工具软件识别以下标签:

标签描述示例
@author标识一个类的作者@author description
@deprecated指名一个过期的类或成员@deprecated description
{@docRoot}指明当前文档根目录的路径Directory Path
@exception标志一个类抛出的异常@exception exception-name explanation
{@inheritDoc}从直接父类继承的注释Inherits a comment from the immediate surperclass.
{@link}插入一个到另一个主题的链接{@link name text}
{@linkplain}插入一个到另一个主题的链接,但是该链接显示纯文本字体Inserts an in-line link to another topic.
@param说明一个方法的参数@param parameter-name explanation
@return说明返回值类型@return explanation
@see指定一个到另一个主题的链接@see anchor
@serial说明一个序列化属性@serial description
@serialData说明通过writeObject( ) 和 writeExternal( )方法写的数据@serialData description
@serialField说明一个ObjectStreamField组件@serialField name type description
@since标记当引入一个特定的变化时@since release
@throws和 @exception标签一样.The @throws tag has the same meaning as the @exception tag.
{@value}显示常量的值,该常量必须是static属性。Displays the value of a constant, which must be a static field.
@version指定类的版本@version info

文档注释

在开始的 /** 之后,第一行或几行是关于类、变量和方法的主要描述。

之后,你可以包含一个或多个各种各样的 @ 标签。每一个 @ 标签必须在一个新行的开始或者在一行的开始紧跟星号(*).

多个相同类型的标签应该放成一组。例如,如果你有三个 @see 标签,可以将它们一个接一个的放在一起。

下面是一个类的说明注释的实例:

  1. /*** 这个类绘制一个条形图
  2. * @author java
  3. * @version 1.2
  4. */

javadoc 输出什么

javadoc 工具将你 Java 程序的源代码作为输入,输出一些包含你程序注释的HTML文件。

每一个类的信息将在独自的HTML文件里。javadoc 也可以输出继承的树形结构和索引。

由于 javadoc 的实现不同,工作也可能不同,你需要检查你的 Java 开发系统的版本等细节,选择合适的 Javadoc 版本。

实例

下面是一个使用说明注释的简单实例。注意每一个注释都在它描述的项目的前面。

在经过 javadoc 处理之后,SquareNum 类的注释将在 SquareNum.html 中找到。

SquareNum.java 文件代码:

  1. import java.io.*;
  2. /**
  3. * 这个类演示了文档注释
  4. * @author Ayan Amhed
  5. * @version 1.2
  6. */
  7. public class SquareNum {
  8. /**
  9. * This method returns the square of num.
  10. * This is a multiline description. You can use
  11. * as many lines as you like.
  12. * @param num The value to be squared.
  13. * @return num squared.
  14. */
  15. public double square(double num) {
  16. return num * num;
  17. }
  18. /**
  19. * This method inputs a number from the user.
  20. * @return The value input as a double.
  21. * @exception IOException On input error.
  22. * @see IOException
  23. */
  24. public double getNumber() throws IOException {
  25. InputStreamReader isr = new InputStreamReader(System.in);
  26. BufferedReader inData = new BufferedReader(isr);
  27. String str;
  28. str = inData.readLine();
  29. return (new Double(str)).doubleValue();
  30. }
  31. /**
  32. * This method demonstrates square().
  33. * @param args Unused.
  34. * @return Nothing.
  35. * @exception IOException On input error.
  36. * @see IOException
  37. */
  38. public static void main(String args[]) throws IOException
  39. {
  40. SquareNum ob = new SquareNum();
  41. double val;
  42. System.out.println("Enter value to be squared: ");
  43. val = ob.getNumber();
  44. val = ob.square(val);
  45. System.out.println("Squared value is " + val);
  46. }
  47. }

如下,使用 javadoc 工具处理 SquareNum.java 文件:

  1. $ javadoc SquareNum.java
  2. Loading source file SquareNum.java...
  3. Constructing Javadoc information...
  4. Standard Doclet version 1.5.0_13
  5. Building tree for all the packages and classes...
  6. Generating SquareNum.html...
  7. SquareNum.java:39: warning - @return tag cannot be used\
  8. in method with void return type.
  9. Generating package-frame.html...
  10. Generating package-summary.html...
  11. Generating package-tree.html...
  12. Generating constant-values.html...
  13. Building index for all the packages and classes...
  14. Generating overview-tree.html...
  15. Generating index-all.html...
  16. Generating deprecated-list.html...
  17. Building index for all classes...
  18. Generating allclasses-frame.html...
  19. Generating allclasses-noframe.html...
  20. Generating index.html...
  21. Generating help-doc.html...
  22. Generating stylesheet.css...
  23. 1 warning
  24. $

自定义注释

定义成模板在自己的 IDE 上,这样每次通过快捷键就可自动帮你输出在方法中,省去了很多时间,也使代码更加规范。

下面已 eclipse 为例,分析一下自己的。

我是加载了 JAutodoc 插件在 IDE 中,习惯这种格式的小伙伴也可以去下载一下。

首先是在文件头部添加:

  1. /*
  2. * <p>项目名称: ${project_name} </p>
  3. * <p>文件名称: ${file_name} </p>
  4. * <p>描述: [类型描述] </p>
  5. * <p>创建时间: ${date} </p>
  6. * <p>公司信息: ************公司 *********部</p>
  7. * @author <a href="mail to: *******@******.com" rel="nofollow">作者</a>
  8. * @version v1.0
  9. * @update [序号][日期YYYY-MM-DD] [更改人姓名][变更描述]
  10. */

方法:

  1. /**
  2. * @Title:${enclosing_method}
  3. * @Description: [功能描述]
  4. * @Param: ${tags}
  5. * @Return: ${return_type}
  6. * @author <a href="mail to: *******@******.com" rel="nofollow">作者</a>
  7. * @CreateDate: ${date} ${time}</p>
  8. * @update: [序号][日期YYYY-MM-DD] [更改人姓名][变更描述]
  9. */

getter 和 setter

  1. /**
  2. * 获取 ${bare_field_name}
  3. */
  4. /**
  5. * 设置 ${bare_field_name}
  6. * (${param})${field}
  7. */