如何在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标签。

571356 次浏览

一般格式,从javadoc留档的@link部分开始,是:

package.class#member

示例

同一个类中的方法:

/** 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 ) { ... }

或者您可以使用与默认文本不同的文本从代码示例链接,如上所示“方法调用链”。然而,当API不断发展时,这可能是脆弱的。

类型擦除和#成员

如果方法签名包含参数化类型,请在javadoc@链接中删除这些类型。例如:

int bar( Collection<Integer> receiver ) { ... }
/** See also {@link #bar(Collection)}. */void foo() { ... }

您将在标准Doclet的文档注释规范中找到有关JavaDoc的许多信息,包括

{@link模块/package.class#member标签}

标记(您正在查找的)。留档中的相应示例如下

例如,这里有一个引用getComponentAt(int, int)方法的注释:

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

如果引用的方法在当前类中,则可以省略module/package.class部分。


关于JavaDoc的其他有用链接是:

您可以使用@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();}