Javadoc链接到其他类中的方法


238

目前,我正在使用此Javadoc语法引用其他类中的方法:

@see {@link com.my.package.Class#method()}

根据我从文档中了解到的,这是执行此操作的正确方法。但是现在到了有趣的部分,还是令人沮丧。当我生成此javadoc时,首先出现以下错误:

warning - Tag @see:illegal character: "123" in "{@link com.my.package.Class#method()}"
warning - Tag @see:illegal character: "64" in "{@link com.my.package.Class#method()}"
warning - Tag @see: reference not found: {@link com.my.package.Class#method()}

生成的HTML代码是:

"," <code>com.my.package.Class#method()}</code> ","

当然,我没有任何联系。谁能告诉我发生了什么,以及有关如何解决此问题的任何提示?

根据ASCII表,用于wold的字符123和64分别表示{和@,因此,根据文档,当此语法正确时,为什么这些字符无效?


1
只是检查...您阅读过Javadoc Generator文档吗?docs.oracle.com/javase/7/docs/technotes/tools/windows/…–
Diogo Moreira

您是否导入com.my.package.Class了编写此JavaDoc的类?在未找到引用似乎很奇怪。另一方面,我从未将它们结合使用,但是彼此之间可能会发生冲突,@see并产生自己的看法,这不会令我感到惊讶。@link@see
Fritz

1
@DiogoMoreira-不,我没有阅读有关发动机的信息,但我会检查一下。
罗伯特

@Gamb-当然,这不是我实际的Javadoc输入;-)是的,所有导入均已就绪。
罗伯特

1
如果将原始超链接作为@see标记的值放在javadoc中,则会发生类似的错误。在这种情况下,要解决此问题,请将超链接包装在html锚元素中:/** @see <a href="http://example.com">Example</a> */
cyber-monk

Answers:


280

对于Javadoc标签@see,您不需要使用@link;Javadoc将为您创建一个链接。尝试

@see com.my.package.Class#method()

这是有关的更多信息@see


谢谢您,我刚刚测试了此解决方案,并且效果很好!但是我已经读过很多地方了,您应该使用see中的链接使它起作用,所以这有点奇怪……
Robert

7
您可以使用@link的其他地区的Javadoc尚未变成链接,如在说明@param,在说明@return,在说明等的主要部分
rgettman

1
当我只是尝试将其显示为纯文本时,它像我的@see一样无法点击。
JesseBoyd

146

除此之外@see,更通用的引用另一类的方法以及该类的方法可能是{@link somepackage.SomeClass#someMethod(paramTypes)}。这样的好处是可以在javadoc描述的中间使用。

javadoc文档(@link标记的描述)中

此标记与@see非常相似–两者都需要相同的引用,并且对于package.class#member和label接受完全相同的语法。主要区别在于{@link}生成一个嵌入式链接,而不是将链接放在“另请参见”部分中。同样,{@ link}标记以大括号开头和结尾,以将其与行内文本的其余部分分开。


68

因此,解决原始问题的方法是,您无需在同一行上同时使用“ @see”和“ {@link ...}”引用。“ @link”标记是自给自足的,并且如上所述,您可以将其放在javadoc块中的任何位置。因此,您可以将两种方法混合使用:

/**
 * some javadoc stuff
 * {@link com.my.package.Class#method()}
 * more stuff
 * @see com.my.package.AnotherClass
 */

4
这应该被接受,因为其他两个答案并不表明'@link'或'@see'必须在多行注释中/ ** * /而不是单行
Stoycho Andreev

1
@Sniper,{@link }在单行Javadoc注释中工作正常,您是否在指称它们不适用于以开头的注释///** */是Javadoc,并且对于任何Javadoc函数都是必需的。
亚瑟(Jase)

是@Jase我恰好遇到了这个评论,评论必须是/ ** * /,但不是//
Stoycho Andreev

6
@Sniper我认为这不是必须接受的答案,因为这是一个Javadoc问题,通常应该理解,Javadoc仅在Javadoc注释中起作用。
亚瑟(Jase)

@Jase有点同意您的观点,但是我相信像Stackoverflow这样的信息源需要通过示例进行解释,而不必引用Oracle文档或某些其他文档的引文,这显然不清楚。该答案是唯一具有示例的答案,以上两个答案均为引号。
Stoycho Andreev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.