Thinking in Java 4 : 注释和嵌入文档

简介: Java 里有两种类型的注释。第一种是传统的、 C 语言风格的注释,是从 C++继承而来的。这些注释用一个“ /*”起头,随后是注释内容,并可跨越多行,最后用一个“ */”结束。

Java 里有两种类型的注释,第一种是传统的、 C 语言风格的注释,是从 C++继承而来的。这些注释用一个“ /”起头,随后是注释内容,并可跨越多行,最后用一个“ /”结束。

注意:许多程序员在连续注释内容的每一行都用一个“ *”开头,所以经常能看到象下面这样的内容:

/* 这是
 * 一段注释,
 * 它跨越了多个行
*/

但请记住,进行编译时,/*和*/之间的所有东西都会被忽略,所以上述注释与下面这段注释并没有什么不同:

/* 这是一段注释,
它跨越了多个行 */

第二种类型的注释也起源于 C++。这种注释叫作“单行注释”,以一个“ //”起头,表示这一行的所有内容都是注释。

这种类型的注释更常用,因为它书写时更方便。没有必要在键盘上寻找“ /”, 再寻找“ *”(只需按同样的键两次),而且不必在注释结尾时加一个结束标记。下面便是这类注释的一个例子:

// 这是一条单行注释

1 注释文档

对于 Java 语言,程序的文档化,最大的问题莫过于对文档的维护。解决的方法就是将代码同文档“链接”起来,为达到这个目的,最简单的方法是将所有内容都置于同一个文件,然而,为使一切都整齐划一,还必须使用一种特殊的注释语法,以便标记出特殊的文档;另外还需要一个工具,用于提取这些注释,并按有价值的形式将其展现出来。

用于提取注释的工具叫作 javadoc,它 输出的是一个 HTML 文件,我们能轻松获得所有 Java 库的文档。

2 具体语法

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

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


下面这个简单的例子所示:

/** 一个类注释 */
public class DocTest {
   /** 一个变量注释 */
  public int i;
  /** 一个方法注释 */
  public void f() {}
}

注意 javadoc 只能为 public(公共)和 protected(受保护)成员处理注释文档,因为只有 public 和 protected 成员才可在文件之外使用,然而,所有类注释都会包含到输出结果里。

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。

4 @ s e e :引用其他类

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

@see 类名
@see 完整类名
@see 完整类名#方法名

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

5 类文档标记

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

1. @version

格式如下:

@version 版本信息

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

2. @author

格式如下:

@author 作者信息

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

6 变量文档标记

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

7 方法文档标记

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

1. @param

格式如下:

@param 参数名 说明

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

2. @return

格式如下:

@return 说明

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

3. @exception

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

@exception 完整类名 说明

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

4. @deprecated

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

8 文档示例

下面还是我们的第一个 Java 程序,只不过已加入了完整的文档注释:

import java.util.Date;
import java.util.Properties;

/**
 * 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());
    }
}
相关文章
|
2月前
|
Java API Apache
Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
【10月更文挑战第29天】Java编程如何读取Word文档里的Excel表格,并在保存文本内容时保留表格的样式?
153 5
|
5月前
|
XML 数据采集 存储
使用Java和XPath在XML文档中精准定位数据
在数据驱动的时代,从复杂结构中精确提取信息至关重要。XML被广泛用于数据存储与传输,而XPath则能高效地在这些文档中导航和提取数据。本文深入探讨如何使用Java和XPath精准定位XML文档中的数据,并通过小红书的实际案例进行分析。首先介绍了XML及其挑战,接着阐述了XPath的优势。然后,提出从大型XML文档中自动提取特定产品信息的需求,并通过代理IP技术、设置Cookie和User-Agent以及多线程技术来解决实际网络环境下的数据抓取问题。最后,提供了一个Java示例代码,演示如何集成这些技术以高效地从XML源中抓取数据。
194 7
使用Java和XPath在XML文档中精准定位数据
|
1月前
|
Java
Java 中的注释
1. 单行注释:// 2. 多行注释:/* */ 3. 文档注释::/** **/
|
3月前
|
Java 测试技术 程序员
💡Java 零基础 | 深入理解注释的重要性与应用
【10月更文挑战第10天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
39 5
|
3月前
|
Java Linux
java读取linux服务器下某文档的内容
java读取linux服务器下某文档的内容
44 3
java读取linux服务器下某文档的内容
|
4月前
|
Java API 开发者
Java 注释规范
Java中的注释规范包括单行注释(`//`)、多行注释(`/* ... */`)和文档注释(`/** ... */`)。单行注释适用于简短说明,多行注释用于较长描述,文档注释则专为自动生成API文档设计。注释应清晰明了、及时更新,避免冗余,并详细说明参数和返回值。遵循这些规范有助于提高代码的可读性和可维护性。
241 5
|
5月前
|
Java C# 容器
逻辑运算符Java代码的注释
这段代码及文字介绍了一个简单的Java程序以及Java编程的基础概念。代码展示了如何输出“Hello Word”。接着,用贴近生活的比喻解释了`package`(包)、`public`(访问修饰符)、`class`(类)、`static`(静态)和`void`(空)的概念。此外,还介绍了`System.out.println()`方法。进一步讲解了Java中的注释、数据类型(包括整型、浮点型、字符型和布尔型),变量和常量的概念,以及运算符、类型转换、赋值运算符、关系运算符与逻辑运算符等基础知识点。通过生动的例子帮助初学者更好地理解和记忆。
30 2
|
5月前
|
Java
【Java 第三篇章】注释、数据类型、运算符
【8月更文挑战第2天】 Java支持三种注释:单行(`//`)、多行(`/*...*/`)及文档注释(`/**...*/`)。它定义了八种基本数据类型,包括四种整数类型(`byte`、`short`、`int`、`long`),两种浮点类型(`float`、`double`),一种字符类型(`char`)和一种布尔类型(`boolean`)。数据类型之间可以自动转换或通过强制转换改变,但后者可能导致精度损失。Java中的运算符涵盖算术(如`+`、`-`)、赋值(如`=`)、比较(如`==`)、逻辑(如`&&`)和三目运算符等。例如,算术运算可用于执行基本数学计算,而逻辑运算符用于组合条件判断。
30 1
|
5月前
|
Java API 数据中心
百炼平台Java 集成API上传文档到数据中心并添加索引
本文主要演示阿里云百炼产品,如何通过API实现数据中心文档的上传和索引的添加。
170 3
|
4月前
|
Java Apache Maven
Java中使用poi+poi-tl实现根据模板导出word文档
这个过程不仅简化了文档生成的工作,而且保证了生成文档的一致性与准确性,特别适合于那些需要生成大量文档的自动化场景。通过以上步骤,Java开发人员可以实现高效、可靠的Word文档导出功能。
1698 0