Как добавить ссылку на параметр метода в javadoc?

Есть ли способ добавить ссылки на один или несколько параметров метода из тела документации метода? Что-то вроде:

/**
 * When {@paramref a} is null, we rely on b for the discombobulation.
 *
 * @param a this is one of the parameters
 * @param b another param
 */
void foo(String a, int b)
{...}

person ripper234    schedule 03.11.2009    source источник


Ответы (5)


Насколько я могу судить после прочтения документации для javadoc нет такой фичи.

Не используйте <code>foo</code>, как рекомендовано в других ответах; вы можете использовать {@code foo}. Это особенно полезно знать, когда вы ссылаетесь на общий тип, такой как {@code Iterator<String>} - он выглядит лучше, чем <code>Iterator&lt;String&gt;</code>, не так ли!

person Kevin Bourrillion    schedule 04.11.2009
comment
Тег @code описан в Javadoc - описания тегов. См. Пример использования в коде JDK8. - person pba; 06.09.2019

Как вы можете видеть в исходном коде Java класса java.lang.String:

/**
 * Allocates a new <code>String</code> that contains characters from
 * a subarray of the character array argument. The <code>offset</code>
 * argument is the index of the first character of the subarray and
 * the <code>count</code> argument specifies the length of the
 * subarray. The contents of the subarray are copied; subsequent
 * modification of the character array does not affect the newly
 * created string.
 *
 * @param      value    array that is the source of characters.
 * @param      offset   the initial offset.
 * @param      count    the length.
 * @exception  IndexOutOfBoundsException  if the <code>offset</code>
 *               and <code>count</code> arguments index characters outside
 *               the bounds of the <code>value</code> array.
 */
public String(char value[], int offset, int count) {
    if (offset < 0) {
        throw new StringIndexOutOfBoundsException(offset);
    }
    if (count < 0) {
        throw new StringIndexOutOfBoundsException(count);
    }
    // Note: offset or count might be near -1>>>1.
    if (offset > value.length - count) {
        throw new StringIndexOutOfBoundsException(offset + count);
    }

    this.value = new char[count];
    this.count = count;
    System.arraycopy(value, offset, this.value, 0, count);
}

Ссылки на параметры окружены тегами <code></code>, что означает, что синтаксис Javadoc не предоставляет никакого способа сделать это. (Я думаю, что String.class - хороший пример использования javadoc).

person Lastnico    schedule 03.11.2009
comment
Тег ‹code› ‹/code› не ссылается на конкретный параметр. Он форматирует слово String в текст, выглядящий как код. - person Naxos84; 09.03.2017
comment
вместо этого вы можете использовать {@code foo} - person Simeon; 19.07.2021

Правильный способ обращения к параметру метода выглядит следующим образом:

введите описание изображения здесь

person Eurig Jones    schedule 13.01.2017
comment
Это ничего не добавляет к существующим ответам. Пожалуйста, удалите это. - person suriv; 23.01.2017
comment
Он не только отвечает на вопрос, но и наглядно объясняет, как изменить Javadoc с параметром с помощью IDE, такой как Intellij. Это будет полезно для тех, кто ищет ответ. - person Eurig Jones; 08.04.2017
comment
В Eclipse это не работает. Но тем не менее это хороший ответ - person Henrique de Sousa; 08.08.2017
comment
это следует удалить. представьте, больше не существует. - person user4504267; 16.11.2017
comment
@ user4504267 Изображение выглядит нормально, по крайней мере, сейчас. - person ErikE; 30.05.2018
comment
Попробуйте выполнить рефакторинг имени параметра, intellij не будет обновлять эти блоки кода. - person m1ld; 09.11.2018
comment
Я только что понял, что предварительный просмотр у меня не работает, так как я пытался ссылаться на один параметр из описания @param другого вместо тела javadoc. - person Simeon; 19.07.2021

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

Обзор теглетов

Обзор Doclet

person jitter    schedule 03.11.2009
comment
И сделайте запрос на перенос в javadoc :) - person Juh_; 05.11.2014

На 2021 год лучше всего использовать @param:

/**
 * When {@param a} is null, we rely on b for the discombobulation.
 *
 * @param a this is one of the parameters
 * @param b another param
 */
void foo(String a, int b)
{...}

Подробнее см. Описание некоторых тегов javadoc: https://idratherbewriting.com/java-javadoc-tags/ < / а>

person Viacheslav Shalamov    schedule 16.03.2021
comment
Нет, это не так. Документ не содержит примера такого использования. @param допустимо только для описания параметра, но не для ссылки на него. - person Dmitry Spikhalskiy; 17.03.2021