国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JavaDoc,在 Java 的注釋上做文章(上)

2019-11-18 13:28:50
字體:
來源:轉載
供稿:網友

  對于java注釋我們主要了解兩種:
  // 注釋一行
  /* ...... */ 注釋若干行
  但還有第三種,文檔注釋:
  /** ...... */ 注釋若干行,并寫入 javadoc 文檔
  通常這種注釋的多行寫法如下:
  /**
  * .........
  * .........
  */
  很多人多忽視了這第三種注釋,那么這第三種注釋有什么用?javadoc 又是什么東西?下面我們就談談。
  一. Java 文檔和 Javadoc
  Java 程序員都應該知道使用 JDK 開發,最好的幫助信息就來自 SUN 發布的 Java 文檔。它分包、分類具體的提供了各方法、屬性的幫助信息,具有具體的類樹信息、索引信息等,并提供了許多相關類之間的關系,如繼續、實現接口、引用等。
  Java 文檔全是由一些 Html 文件組織起來的,在 SUM 的站點上可以下載它們的壓縮包。但是你肯定想不到,這些文檔我們可以自己生成?!痛舜蜃?,再吊一次胃口。
  安裝了 JDK 之后,安裝目錄下有一個 src.jar 文件或者 src.zip 文件,它們都是以 ZIP 格式壓縮的,可以使用 WinZip 解壓。解壓之后,我們就可以看到分目錄放的全是 .java 文件。是了,這些就是 Java 運行類的源碼了,非常完整,連注釋都寫得一清二楚……不過,怎么看這些注釋都有點似曾相識的感覺?
  這就不希奇了,我們的迷底也快要揭開了。假如你仔細對比一下 .java 源文件中的文檔注釋 (/** ... */) 和 Java 文檔的內容,你會發現它們就是一樣的。Java 文檔只是還在格式和排版上下了些功夫。再仔細一點,你會發現 .java 源文件中的注釋還帶有 HTML 標識,如 <B>、
、<Code> 等,在 Java 文檔中,該出現這些標識的地方,已經按標識的的定義進行了排版。
  終于真像大白了,原來 Java 文檔是來自這些注釋。難怪這些注釋叫做文檔注釋呢!不過,是什么工具把這些注釋變成文檔的呢?
  是該請出 javadoc 的時候了。在 JDK 的 bin 目錄下你可以找到 javadoc,假如是 Windows 下的 JDK,它的文件名為 javadoc.exe。使用 javdoc 編譯 .java 源文件時,它會讀出 .java 源文件中的文檔注釋,并按照一定的規則與 Java 源程序一起進行編譯,生成文檔。
  介紹 javadoc 的編譯命令之前,還是先了解一下文檔注釋的格式吧。不過為了能夠編譯下面提到的若干例子,這里先介紹一條 javadoc 命令:
  javadoc -d 文檔存放目錄 -author -version 源文件名.java
  這條命令編譯一個名為 “源文件名.java”的 java 源文件,并將生成的文檔存放在“文檔存放目錄”指定的目錄下,生成的文檔中 index.html 就是文檔的首頁。-author 和 -version 兩上選項可以省略。
  二. 文檔注釋的格式
  文檔注釋可以用于對類、屬性、方法等進行說明。寫文檔注釋時除了需要使用 /** .... */ 限定之外,還需要注重注釋內部的一些細節問題。
  1. 文檔和文檔注釋的格式化
  生成的文檔是 HTML 格式,而這些 HTML 格式的標識符并不是 javadoc 加的,而是我們在寫注釋的時候寫上去的。比如,需要換行時,不是敲入一個回車符,而是寫入
,假如要分段,就應該在段前寫入 <p>。
  因此,格式化文檔,就是在文檔注釋中添加相應的 HTML 標識。
  文檔注釋的正文并不是直接復制到輸出文件 (文檔的 HTML 文件),而是讀取每一行后,刪掉前導的 * 號及 * 號以前的空格,再輸入到文檔的。如
  /**
  * This is first line.

  ***** This is second line.

  This is third line.
  */ 
  編譯輸出后的 HTML 源碼則是
  This is first line.

  This is second line.

  This is third line. 
  前導的 * 號答應連續使用多個,其效果和使用一個 * 號一樣,但多個 * 號前不能有其它字符分隔,否則分隔符及后面的 * 號都將作為文檔的內容。* 號在這里是作為左邊界使用,如上例的第一行和第二行;假如沒有前導的 * 號,則邊界從第一個有效字符開始,而不包括前面的空格,如上例第三行。
  還有一點需要說明,文檔注釋只說明緊接其后的類、屬性或者方法。如下例:
  /** comment for class */
  public class Test {
  /** comment for a attribute */
  int number;
  /** comment for a method */
  public void myMethod() { ...... }
  ......
  }
  上例中的三處注釋就是分別對類、屬性和方法的文檔注釋。它們生成的文檔分別是說明緊接其后的類、屬性、方法的?!熬o接”二字尤其重要,假如忽略了這一點,就很可能造成生成的文檔錯誤。如
  import java.lang.*;
  /** commnet for class */
  public class Test { ...... }
  // 此例為正確的例子
  這個文檔注釋將生成正確的文檔。但只需要改變其中兩行的位置,變成下例,就會出錯:
  /** commnet for class */
  import java.lang.*;
  public class Test { ...... }
  // 此例為錯誤的例子
  這個例子只把上例的 import 語句和文檔注釋部分交換了位置,結果卻大不相同——生成的文檔中根本就找不到上述注釋的內容了。原因何在?
  “/** commnet for class */”是對 class Test 的說明,把它放在“public class Test { ...... }”之前時,其后緊接著 class Test,符合規則,所以生成的文檔正確。但是把它和“import java.lang.*;”調換了位置后,其后緊接的就是不 class Test 了,而是一個 import 語句。由于文檔注釋只能說明類、屬性和方法,import 語句不在此列,所以這個文檔注釋就被當作錯誤說明省略掉了。
  2. 文檔注釋的三部分
  根據在文檔中顯示的效果,文檔注釋分為三部分。先舉例如下,以便說明。
  /**
  * show 方法的簡述.
  * <p>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 水城县| 乐昌市| 务川| 陇川县| 内丘县| 枞阳县| 盱眙县| 永济市| 富顺县| 丰台区| 林甸县| 敦煌市| 崇文区| 张北县| 洞口县| 许昌县| 盐亭县| 仁布县| 集安市| 游戏| 双柏县| 靖西县| 房山区| 聂拉木县| 云龙县| 化州市| 元谋县| 钟祥市| 乐陵市| 潍坊市| 郸城县| 信宜市| 花垣县| 介休市| 三门县| 日喀则市| 黄骅市| 东丰县| 神农架林区| 河间市| 合肥市|