ChatGPT解决这个技术问题 Extra ChatGPT

如何在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)
{...}

J
Jacek Laskowski

据我在阅读 the docs for javadoc 后所知,没有这样的功能。

不要按照其他答案中的建议使用 <code>foo</code> ;您可以使用 {@code foo}。当您引用诸如 {@code Iterator<String>} 之类的泛型类型时,知道这一点尤其有用——当然看起来比 <code>Iterator&lt;String&gt;</code> 更好,不是吗!


Javadoc - Tag Descriptions 中描述了 @code 标记。见Sample usage in JDK8 code
怎么不可能在方法的文档中引用方法自己的参数。摇摆和错过,Java!
E
Eurig Jones

引用方法参数的正确方式是这样的:

https://i.stack.imgur.com/Z1IGb.png


它不仅回答了问题,而且直观地解释了如何使用 Intellij 等 IDE 修改 Javadoc 的参数。这对于正在寻找答案的搜索者很有用。
在 Eclipse 上它不起作用。但这仍然是一个很好的答案
这应该被删除。想象不再存在。
@user4504267 图片看起来不错,至少现在是这样。
尝试重构参数名称,intellij 不会更新此代码块。
K
Koray Tugay

正如您在 java.lang.String 类的 Java 源代码中所见:

/**
 * 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 使用的一个很好的例子)。


标记未引用特定参数。它将“字符串”一词格式化为“代码外观”文本。
@Naxos84 第一个 <code></code>标记,但在 javadoc 中它们进一步引用了由 <code></code> 包围的 offsetcount 参数标签
j
jitter

我想你可以编写自己的 doclet 或 taglet 来支持这种行为。

Taglet Overview

Doclet Overview


并向 javadoc 发出拉取请求 :)
C
Community

以下是它在 Eclipse Temurin JDK 8 源代码中的编写方式:

https://i.stack.imgur.com/CFcSZ.png

看起来唯一的方法是 或 {@code },但它不是链接 - 它只是格式化。


所以.. 除了在 Params: 部分下,x 位于 println 的 javadoc 描述中的什么位置?
这是一个错误的答案! {@link #method(parameters)} 仅适用于指向同一类的其他方法的链接,而不是指向同一方法的参数的链接,这是问题所在。