JavaDoc 中的`.` 和`#` 有什么区别?

What is the difference between `.` and `#` in the JavaDoc?

我在 Javadoc 上面的方法中有这一行:

* {@link client.navigator.URLManager.newToken(NavigationToken)}

并且 Intellij IDEA 分析器将其突出显示为错误:

Cannot resolve symbol 'client.navigator.URLManager.newToken'

但如果我将 . 更改为 # 就可以了。

* {@link client.navigator.URLManager#newToken(NavigationToken)}

有什么区别?因为我在项目中有很多地方有.#

. 将部分包和包从 class.

中分离出来

# 将 class 名称与字段、方法或构造函数分开。

即在 client.navigator.URLManager#newToken 中,client.navigator 是一个包,URLManager 是一个 class,newToken 是方法名称。

甚至可以使用 #someMethod 来引用当前 class 中的方法,而无需指定 class(字段相同,...)。

请注意,在内部 classes 的情况下,将有多个 class 名称:java.lang.Thread.State 是包 java.lang 中的内部 class它位于 Thread 内,名为 State。内部 classes 和顶级 classes 之间没有语法差异,识别这种差异的唯一方法(无需查找 classes)是看到 Thread 是大写的,因此可能是 class(但 Java 允许小写 classes 和大写包,即使约定禁止它们)。

Javadoc 生成在构建链接时注意 ".""#" 字符。链接可以指向其他 Javadoc 页面或特定 Javadoc 页面中的某个位置。

例如,这是来自 Integer"#" 示例,其中包括此 Javadoc 指令:{@link java.lang.Integer#toString(int)}。当生成 Javadoc 文件时,"link" 指令将计算为 HTML,它指向 "Integer" .html 页面上的 toString() 方法(具体来说:https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html#toString--), 所以你可以 go right there:

/**
 * Returns a {@code String} object representing this
 * {@code Integer}'s value. The value is converted to signed
 * decimal representation and returned as a string, exactly as if
 * the integer value were given as an argument to the {@link
 * java.lang.Integer#toString(int)} method.
 *
 * @return  a string representation of the value of this object in
 *          base 10.
 */
public String toString() {
    return toString(value);
}

这是另一个只有 "." 个字符(没有 "#")的例子,来自 String which has a link ({@link java.text.Collator}) which generates a URL (https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/Collator.html) that goes to the top of the page for java.text.Collator:

 * The class {@code String} includes methods for examining

...

 * <p>Unless otherwise noted, methods for comparing Strings do not take locale
 * into account.  The {@link java.text.Collator} class provides methods for
 * finer-grain, locale-sensitive String comparison.

...