71

I have two packages, Shapes and Fruits:

com.myproject.Shapes.
    Circle
    Square
    Triangle
com.myproject.Fruits.
    Apple
    Orange

I am writing the JavaDoc for Apple and need to provide an {@link} to Square.

I have tried all of the following, and none of them work:

{@link Square}
{@link com.myproject.Square}

I've been able to find documentation for linking to: (a) classes within the same package, or (b) externals URLs, but not classes in another package.

Any ideas what the correct syntax should be? Thanks!

Andy Thomas
  • 82,182
  • 10
  • 99
  • 146
IAmYourFaja
  • 52,993
  • 172
  • 451
  • 744

3 Answers3

95

The correct syntax variants are

{@link [<package>.]<class>[#<method>]}
{@link #<method>}

You were missing a complete package. The following example should be correct

{@link com.myproject.Shapes.Square} 
                     ^^^^^^
Johan Sjöberg
  • 46,019
  • 20
  • 127
  • 142
20

For another package use this syntax:

{@link  package.class#member  label}

In your case this should be:

{@link com.myproject.Shapes.Square Square}

If you want to show only the class name then use the label, if complete path is desired then label is not required.

Reference: http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html#link

Pranav Shah
  • 3,165
  • 3
  • 28
  • 45
0

The question is pretty old, but adding another answer for anyone having similar issue.

Using @see would give you a clickable link to go to a specified class or method, given that the class, if present in another package, is imported.

In case the class / method being referred is in another module, you will have to add a dependency of that module in the current module, for @see to provide you a clickable link.

/**
 *     @see com.myproject.Square#method(int)
 */
sss
  • 488
  • 6
  • 20