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.
...
我在 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.
...