73

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
  • 84,978
  • 11
  • 107
  • 151
IAmYourFaja
  • 55,468
  • 181
  • 466
  • 756

3 Answers3

96

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
  • 47,929
  • 21
  • 130
  • 148
21

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,233
  • 3
  • 30
  • 47
2

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 so that @see can provide you with a clickable link.

/**
 *     @see com.myproject.Square#method(int)
 */
cb4
  • 6,689
  • 7
  • 45
  • 57
sss
  • 598
  • 6
  • 24