Как ссылаться на метод в javadoc?

как я могу использовать @link тег для ссылки на метод?

Я хочу изменить

/**
 * 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()

до

/**
 * 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()

но я не знаю как формат @link правильно тег.

3 ответов


вы найдете много информации о JavaDoc в спецификация комментария документации для стандартного Doclet, включая информацию о

{@link package.метка члена класса#}

тег (который вы ищете). Соответствующий пример из документации выглядит следующим образом

например, вот комментарий, который относится к getComponentAt (int, int) метод:

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

на package.class часть может быть опущен, если упомянутый метод в текущем классе.


другие полезные ссылки о JavaDoc:


общий формат, от @link раздел документации javadoc, is:

{@link package.class#member label}

примеры

метод в том же классе:

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

метод другого класса, либо в том же пакете, либо импортировано:

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

метод другой пакет и не импортировано:

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

метка, связанная с методом, в обычном тексте вместо шрифта кода:

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

цепочка вызовов методов, как в вашем вопросе. Мы должны указать метки для ссылок на методы вне этого класса, или мы получим getFoo().Foo.getBar().Bar.getBaz(). Но эти ярлыки могут быть хрупкими; см. "ярлыки" ниже.

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

метки

автоматическое рефакторинг не может повлиять на этикетки. это включает в себя переименование метод, класс или пакет; и изменение сигнатуры метода.

поэтому, обеспечьте ярлык только если вы хотите другой текст, чем по умолчанию.

например, вы можете связать с человеческим языком код:

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

или вы можете связать образец кода с текстом, отличным от текста по умолчанию, как показано выше в разделе "цепочка вызовов методов."Однако это может быть хрупким, пока Апис развивается.

введите стирание и #member

если сигнатура метода включает параметризованные типы, используйте стирание этих типов в javadoc @link. Например:

int bar( Collection<Integer> receiver ) { ... }

/** See also {@link #bar(Collection)}. */
void foo() { ... }

можно использовать @see для этого:

пример:

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();
    }