之所以把Java注释和文档功能放在最前面介绍,是因为Java程序的理念使然——所谓兵马未动粮草先行。
几乎所有编程语言都提供在源代码中添加注释的功能,开发者通过注释给自己或代码的阅读者进行备忘或提示,好比读书时在书上的空白处写笔记,或在屋子里使用N次贴。Java语言一个优秀思想便是——编写源代码并非唯一重要的工作,给源代码加上详细的注释同样重要。道理很简单,源代码和Java的字节码不同,字节码是给电脑看的,而源代码是给人阅读的,没有好的文档与注释,阅读源代码必须猜测源代码作者的意图,势必枯燥而且效率低下。
Java中的注释一共有两种,我们的Hello World!程序麻雀虽小但是五脏俱全,全部都用到了。下面是Hello World!程序的源代码:
/*
* Created on 2004-6-4
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author gary chan
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class HelloWorldApp {
public static void main(String[] args) {
// 打印Hello World!字样
System.out.println("Hello World!");
}
}
第一种注释是从C语言继承过来的风格,注释从/*开始,到*/结束,它们必须成对使用,之间可以换行。Hello World!程序开头部分就是这种风格的注释,记载着这个源程序的创始时间和一些提示。许多程序员为了美观,喜欢在多行注释前加入一个*符号,从而就形成了上面的格局。当然,这个注释的内容是Eclipse自动生成的,你可以通过修改Eclipse的代码模板来修改自动生成的内容。
第二种注释是从C++语言继承过来的单行注释风格,注释从//开始,一直到这行结束。这种风格的注释非常容易使用,你不必低头在键盘上连续寻找/和*键,只需要连续按下/键两次。同时,不需要像C语言风格注释那样特意使注释符号配对。Hello World!程序中“// 打印Hello World!字样”就是这种风格的注释。
如果你的洞察力敏锐,你会发现Hello World!程序中还有一处用/**和*/包裹起来的的代码并不属于以上任何一种注释。没错,这是Java文档(Java documentation)。文档与注释不同,注释一般比较随意,反映的是局部语句的功能或声明,而文档是与代码的结构相关的,好比是代码的摘要,给人一个结构化的总体观念。特别地,Java文档所注释的,是紧随其后的类、变量或方法。
我们还是结合Eclipse来说明Java文档的应用。首先在Eclipse中打开Hello World!程序。试试看把鼠标移动到HelloWorldApp字符上面去,是不是显示了如图1所示的效果(图1 Eclipse自动显示Java文档的功能)?
没错,当你把鼠标移动到一个Java类、变量或方法上,Eclipse将通过代码分析技术在源代码中萃取出相应的Java文档并且显示给你看,如果该Java元素有文档的话。
下面让我们为main方法编写Java文档来亲自体验一下。首先把光标移动到public class HelloWorldApp {之后并回车以便插入一空白行。然后,输入/**并且回车,你会发现Eclipse自动为你生成如一个Java文档块,并且自动识别出main方法有一个名为args的参数(很神奇吧?)。把该文档改写成这样:
/**
* 这是主函数,程序将从这里开始运行。
* @param args 命令行参数
*/
然后你把鼠标移动到main上面,是不是得到明明白白的文档信息了?
实际上,Java文档功能是贯穿于Java语言中的重要功能。但当你把光标移动到System.out.println("Hello World!")语句上,却得不到有用的含义以及参数的用法,该语句还是Java内置的API呢。怎么会这样子?
聪明的你一定想到答案了——一定是Java API的Java文档没有配置好嘛。没错,J2SE SDK并不包含Java API的Java文档,需要单独下载。你可以从http://java.sun.com/j2se/1.4.2/download.html下载到J2SE 1.4.2的文档,如果你从国外下载不方便,还可以到http://garychan.3322.org的Java资源栏目下载,约32.80MB。下载以后请把压缩包中的doc目录解压缩到C:\j2sdk1.4.2_04\中。
Eclipse默认使用JRE作为Java虚拟机。然而,使用J2SE SDK本身是更好的选择,因为你可以开启查看Java API文档的重要功能,这对于提高软件的开发效率以及深刻体验Eclipse,有着重要意义。方法如下:
1.依次点击Eclipse菜单项中的Windows、Preferences。
2.展开Java/Installed JRE,按下Add,按照图2所示填写参数(图2 完成后按下OK键)。
3.在Installed JREs对话框中的J2SDK 1.4.2_04前面打上勾,按下“OK”关闭Preferences对话框。Eclipse会提示你需要重新编译一次,“OK”即可。
好了,现在把光标移动到println上看看是不是和图3所示一样呢(图3)?
怎么样,该方法的详细使用说明都有了吧?如果内容比较多,按下F2锁定之后便可以察看全部的信息。以后有什么API不明白,不用苦苦上网搜索了,Java API文档本身就是Java API的大百科,再配合Eclipse的自动显示功能,实在方便得不行。
顺便说一句,Java还提供了从源代码中自动萃取Java文档,生成HTML文件以便单独阅读的机制,那就是J2SE SDK提供的javadoc工具。在Eclipse中,可以通过File菜单中的Export选项进行操作。
Just do it
试试把HelloWorldApp的Java文档改得更有调理,并且修改author属性成为你的名字。然后通过Eclipse内置的javadoc输出功能生成该项目的Java文档,感受一下Java文档代码并重的开发理念。
Java文档是一门学问。除了上面用到的param和author标签,Java文档还支持许多特定的标签,可以直接内嵌HTML代码以便得到优美的输出,还可以通过doclets自行扩展javadoc的处理机制。完整的说明文档请参考C:\j2sdk1.4.2_04\docs\tooldocs\windows\javadoc.html。
……