com.sun.javadoc (Java SE 9 & JDK 9 )
Keywords: com.sun.javadoc package

Module jdk.javadoc

# Package com.sun.javadoc

Note: The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`. For more information, see the Migration Guide in the documentation for that package.

The Doclet API (also called the Javadoc API) provides a mechanism for clients to inspect the source-level structure of programs and libraries, including javadoc comments embedded in the source. This is useful for documentation, program checking, automatic code generation and many other tools.

Doclets are invoked by javadoc and use this API to write out program information to files. For example, the standard doclet is called by default and writes out documentation to HTML files.

The invocation is defined by the abstract `Doclet` class -- the entry point is the `start` method:

        public static boolean start(RootDoc root)

The `RootDoc` instance holds the root of the program structure information. From this root all other program structure information can be extracted.

### Terminology

When calling javadoc, you pass in package names and source file names -- these are called the specified packages and classes. You also pass in Javadoc options; the access control Javadoc options (`-public`, `-protected`, `-package`, and `-private`) filter program elements, producing a result set, called the included set, or "documented" set. (The unfiltered set is also available through `allClasses(false)`.)

Throughout this API, the term class is normally a shorthand for "class or interface", as in: `ClassDoc`, `allClasses()`, and `findClass(String)`. In only a couple of other places, it means "class, as opposed to interface", as in: `Doc.isClass()`. In the second sense, this API calls out four kinds of classes: ordinary classes, enums, errors and exceptions. Throughout the API, the detailed description of each program element describes explicitly which meaning is being used.

A qualified class or interface name is one that has its package name prepended to it, such as `java.lang.String`. A non-qualified name has no package name, such as `String`.

### Example

The following is an example doclet that displays information in the `@param` tags of the processed classes:

    import com.sun.javadoc.*;

    public class ListParams extends Doclet {

        public static boolean start(RootDoc root) {
            ClassDoc[] classes = root.classes();
            for (int i = 0; i < classes.length; ++i) {
                ClassDoc cd = classes[i];
                printMembers(cd.constructors());
                printMembers(cd.methods());
            }
            return true;
        }

        static void printMembers(ExecutableMemberDoc[] mems) {
            for (int i = 0; i < mems.length; ++i) {
                ParamTag[] params = mems[i].paramTags();
                System.out.println(mems[i].qualifiedName());
                for (int j = 0; j < params.length; ++j) {
                    System.out.println("   " + params[j].parameterName()
                        + " - " + params[j].parameterComment());
                }
            }
        }
    }

Interfaces and methods from the Javadoc API are marked in red. `Doclet` is an abstract class that specifies the invocation interface for doclets, `Doclet` holds class or interface information, `ExecutableMemberDoc` is a superinterface of `MethodDoc` and `ConstructorDoc`, and `ParamTag` holds information from "`@param`" tags.

This doclet when invoked with a command line like:

        javadoc -doclet ListParams -sourcepath <source-location> java.util

producing output like:

        ...
        java.util.ArrayList.add
           index - index at which the specified element is to be inserted.
           element - element to be inserted.
        java.util.ArrayList.remove
           index - the index of the element to removed.
        ...

See Also:
  `Doclet`, `RootDoc`

- Interface Summary
  Interface | Description
  --- | ---
  AnnotatedType | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  AnnotationDesc | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  AnnotationDesc.ElementValuePair | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  AnnotationTypeDoc | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  AnnotationTypeElementDoc | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  AnnotationValue | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  ClassDoc | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  ConstructorDoc | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  Doc | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  DocErrorReporter | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  ExecutableMemberDoc | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  FieldDoc | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  MemberDoc | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  MethodDoc | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  PackageDoc | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  Parameter | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  ParameterizedType | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  ParamTag | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  ProgramElementDoc | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  RootDoc | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  SeeTag | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  SerialFieldTag | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  SourcePosition | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  Tag | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  ThrowsTag | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  Type | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  TypeVariable | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.
  WildcardType | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.

- Class Summary
  Class | Description
  --- | ---
  Doclet | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.

- Enum Summary
  Enum | Description
  --- | ---
  LanguageVersion | Deprecated. The declarations in this package have been superseded by those in the package `jdk.javadoc.doclet`.