Comments and embedded documentation | CodeGuru

Comments and embedded documentation

Bruce Eckel’s Thinking in Java Contents | Prev | Next There are two types of comments in Java. The first is the traditional C-style comment that was inherited by C++. These comments begin with a /* and continue, possibly across many lines, until a */. Note that many programmers will begin each line of a […]

Written By
CodeGuru Staff
CodeGuru Staff
Mar 1, 2001
6 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

There


are two types of comments in Java. The first is the traditional C-style comment


that was inherited by C++. These comments begin with a


/*

and continue, possibly across many lines, until a


*/

.


Note that many programmers will begin each line of a continued comment with a


*

,


so you’ll often see:

/*
This is

*
A comment that continues

*
Across lines

*/

Remember,


however, that everything inside the


/*

and


*/

is ignored so it’s no different to say:

/*
This is a comment that

continues
across lines */

The


second form of comment comes from C++. It is the single-line comment, which


starts at a


//

and continues until the end of the line. This type of comment is convenient and


commonly used because it’s easy. You don’t need to hunt on the


keyboard to find


/

and then


*

(you just press the same key twice), and you don’t need to close the


comment. So you will often see:

//
this is a one-line comment

Comment
documentation

One


of the thoughtful parts of the Java language is that the designers didn’t


consider writing code to be the only important activity – they also


thought about documenting it. Possibly the biggest problem with documenting


code has been maintaining that documentation. If the documentation and the code


are separate, it becomes a hassle to change the documentation every time you


change the code. The solution seems simple: link the code to the documentation.


The easiest way to do this is to put everything in the same file. To complete


the picture, however, you need a special comment syntax to mark special


documentation and a tool to extract those comments and put them in a useful


form. This is what Java has done.

The


tool to extract the comments is called


javadoc.

It uses some of the technology from the Java compiler to look for special


comment tags you put in your programs. It not only extracts the information


marked by these tags, but it also pulls out the class name or method name that


adjoins the comment. This way you can get away with the minimal amount of work


to generate decent program documentation.

The


output of javadoc is an HTML file that you can view with your Web browser. This


tool allows you to create and maintain a single source file and automatically


generate useful documentation. Because of javadoc we have a standard for


creating documentation, and it’s easy enough that we can expect or even


demand documentation with all Java libraries.


Syntax

All


of the javadoc commands occur only within


/**

comments. The comments end with


*/

as


usual. There are two primary ways to use javadoc: embed HTML, or use “doc


tags.” Doc tags are commands that start with a ‘


@


and are placed at the beginning of a comment line. (A leading ‘


*

’,


however, is ignored.)

There


are three “types” of comment documentation, which correspond to the


element the comment precedes: class, variable, or method. That is, a class


comment appears right before the definition of a class; a variable comment


appears right in front of the definition of a variable and a method comment


appears right in front of the definition of a method. As a simple example:

/** A class comment */
public class docTest {
  /** A variable comment */
  public int i;
  /** A method comment */
  public void f() {}
}

Note


that javadoc will process comment documentation for only


public

and


protected

members.


Comments for


private

and


“friendly” (see Chapter 5) members are ignored and you’ll see


no output. (You can use the


-private

flag


to include


private

members as well.) This makes sense, since only


public

and


protected

members are available outside the file, which is the client programmer’s


perspective. However, all


class

comments are included in the output.

The


output for the above code is an HTML file that has the same standard format as


all the rest of the Java documentation, so users will be comfortable with the


format and can easily navigate your classes. It’s worth entering the


above code, sending it through javadoc and viewing the resulting HTML file to


see the results.


Advertisement

Embedded
HTML

Javadoc


passes HTML commands through to the generated HTML document. This allows you


full use of HTML; however, the primary motive is to let you format code, such as:

/**

*
<pre>

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

*
</pre>

*/

You


can also use HTML just as you would in any other Web document to format the


regular text in your descriptions:

/**

*
You can <em>even</em> insert a list:

*
<ol>

*
<li> Item one

*
<li> Item two

*
<li> Item three

*
</ol>

*/

Note


that within the documentation comment, asterisks at the beginning of a line are


thrown away by javadoc, along with leading spaces. Javadoc reformats everything


so that it conforms to the standard documentation appearance. Don’t use


headings such as


<h1>

or


<hr>

as embedded HTML because javadoc inserts its own headings and yours will


interfere with them.

All


types of comment documentation – class, variable, and method – can


support embedded HTML.


@see:
referring to other classes

All


three types of comment documentation can contain


@see

tags, which allow you to refer to the documentation in other classes. Javadoc


will generate HTML with the


@see

tags hyperlinked to the other documentation. The forms are:

@see classname
@see fully-qualified-classname
@see fully-qualified-classname#method-name

Each


one adds a hyperlinked “See Also” entry to the generated


documentation. Javadoc will not check the hyperlinks you give it to make sure


they are valid.


Class
documentation tags

Along


with embedded HTML and


@see

references,


class documentation can include tags for version information and the


author’s name. Class documentation can also be used for


interfaces

(described later in the book).


@version

This


is of the form:

@version
version-information

in


which


version-information

is any significant information you see fit to include. When the


-version

flag is placed on the javadoc command line, the version information will be


called out specially in the generated HTML documentation.


@author

This


is of the form:

@author
author-information

in


which


author-information

is, presumably, your name, but it could also include your email address or any


other appropriate information. When the


-author

flag


is placed on the javadoc command line, the author information will be called


out specially in the generated HTML documentation.

You


can have multiple author tags for a list of authors, but they must be placed


consecutively. All the author information will be lumped together into a single


paragraph in the generated HTML.


Advertisement

Variable
documentation tags

Variable


documentation can include only embedded HTML and


@see

references.


Method
documentation tags

As


well as embedded documentation and


@see

references, methods allow documentation tags for parameters, return values, and


exceptions.


@param

This


is of the form:

@param
parameter-name
description

in


which


parameter-name

is


the identifier in the parameter list, and


description

is


text that can continue on subsequent lines. The description is considered


finished when a new documentation tag is encountered. You can have any number


of these, presumably one for each parameter.


@return

This


is of the form:

@return
description

in


which


description

gives you the meaning of the return value. It can continue on subsequent lines.


@exception

Exceptions


will be described in Chapter 9, but briefly they are objects that can be


“thrown” out of a method if that method fails. Although only one


exception object can emerge when you call a method, a particular method might


produce any number of different types of exceptions, all of which need


descriptions. So the form for the exception tag is:

@exception
fully-qualified-class-name
description

in


which


fully-qualified-class-name

gives an unambiguous name of an exception class that’s defined somewhere,


and


description

(which can continue on subsequent lines) tells you why this particular type of


exception can emerge from the method call.


@deprecated

This


is new in Java 1.1

.
It is used to tag features that were superseded by an improved feature. The
deprecated tag is a suggestion that you no longer use this particular feature,
since sometime in the future it is likely to be removed. Methods that are marked
@deprecated
cause the compiler to issue warnings if it is used.

Documentation
example

Here is the first Java program again, this time with documentation comments


added:

//: Property.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 &amp; 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());
  }
} ///:~ 

The


first line:


//: Property.java

uses


my own technique of putting a ‘


:


as a special marker for the comment line containing the source file name. The


last line also finishes with a comment, and this one indicates the end of the


source code listing, which allows it to be automatically extracted from the


text of the book and checked with a compiler. This is described in detail in


Chapter 17.


Contents

|

Prev

|

Next
CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.