目前,我引用其他类的方法与此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表,字符123和64代表{和@,那么为什么这些字符无效时,这个语法是正确的,根据文档?


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

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

这里有更多关于@see的信息。


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

在javadoc文档中(@link标签的描述):

这个标记非常类似于@see——对于package.class#成员和标签,两者都需要相同的引用,并接受完全相同的语法。主要的区别是{@link}生成一个内嵌链接,而不是将链接放在“See Also”部分中。此外,{@link}标记的开始和结束都用花括号将其与内联文本的其余部分分开。


因此,最初问题的解决方案是不需要“@see”和“{@link…”}”的引用。“@link”标记是自给自足的,正如前面提到的,您可以将它放在javadoc块中的任何地方。所以你可以混合使用这两种方法:

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