How to reference a method in javadoc?

How can I use the @link tag to link to a method?

I want to change

/**
 * Returns the Baz object owned by the Bar object owned by Foo owned by this.
 * A convenience method, equivalent to getFoo().getBar().getBaz()
 * @return baz
 */
public Baz fooBarBaz()

to

/**
 * Returns the Baz object owned by the Bar object owned by Foo owned by this.
 * A convenience method, equivalent to {@link getFoo()}.{@link getBar()}.{@link getBaz()}
 * @return baz
 */
public Baz fooBarBaz()

but I don't know how to format the @link tag correctly.


You will find much information about JavaDoc at the JavaDoc Tool reference page, including the information on the

{@link package.class#member label}

tag (that you are looking for):

For example, here is a comment that refers to the getComponentAt(int, int) method:

Use the {@link #getComponentAt(int, int) getComponentAt} method.


Other useful links about JavaDoc are:

  • JavaDoc Technology
  • How to Write Doc Comments for the Javadoc Tool

  • The general format, from the @link section of the javadoc documentation, is:

    {@link package.class#成员标签}

    Examples

    Method in the same class:

    /** See also {@link #myMethod(String)}. */
    void foo() { ... }
    

    Method in a different class, either in the same package or imported:

    /** See also {@link MyOtherClass#myMethod(String)}. */
    void foo() { ... }
    

    Method in a different package and not imported:

    /** See also {@link com.mypackage.YetAnotherClass#myMethod(String)}. */
    void foo() { ... }
    

    Label linked to method, in plain text rather than code font:

    /** See also this {@linkplain #myMethod(String) implementation}. */
    void foo() { ... }
    

    A chain of method calls, as in your question. We have to specify labels for the links to methods outside this class, or we get getFoo().Foo.getBar().Bar.getBaz() . But these labels can be fragile; see "Labels" below.

    /**
     * A convenience method, equivalent to 
     * {@link #getFoo()}.{@link Foo#getBar() getBar()}.{@link Bar#getBaz() getBaz()}.
     * @return baz
     */
    public Baz fooBarBaz()
    

    Labels

    Automated refactoring may not affect labels. This includes renaming the method, class or package; and changing the method signature.

    Therefore, provide a label only if you want different text than the default.

    For example, you might link from human language to code:

    /** You can also {@linkplain #getFoo() get the current foo}. */
    void setFoo( Foo foo ) { ... }
    

    Or you might link from a code sample with text different than the default, as shown above under "A chain of method calls." However, this can be fragile while APIs are evolving.

    Type erasure and #member

    If the method signature includes parameterized types, use the erasure of those types in the javadoc @link. For example:

    int bar( Collection<Integer> receiver ) { ... }
    
    /** See also {@link #bar(Collection)}. */
    void foo() { ... }
    

    you can use @see to do that:

    sample:

    interface View {
            /**
             * @return true: have read contact and call log permissions, else otherwise
             * @see #requestReadContactAndCallLogPermissions()
             */
            boolean haveReadContactAndCallLogPermissions();
    
            /**
             * if not have permissions, request to user for allow
             * @see #haveReadContactAndCallLogPermissions()
             */
            void requestReadContactAndCallLogPermissions();
        }
    
    链接地址: http://www.djcxy.com/p/50204.html

    上一篇: 如何在标准doclet的包装中设置javadoc选项?

    下一篇: 如何引用javadoc中的方法?