好吧,一切都在标题中...
我知道这两种形式都指的是方法,但我看不到#
另一种形式的增加。
井号 (#) 不是 Java 语言的一部分。
它在 javadoc 中有一个特殊的用途。规范指出_
package.class#member是任何被引用的有效程序元素名称——包、类、接口、构造函数、方法或字段名称——除了成员名称前面的字符应该是哈希字符 (#)。
和
如前所述,哈希字符 (#),而不是点 (.) 将成员与其类分开。这使 Javadoc 工具能够解决歧义,因为点还分隔类、嵌套类、包和子包。但是,Javadoc 工具通常是宽松的,如果您知道没有歧义,它会正确解析一个点,尽管它会打印一个警告。
该符号不仅适用于方法,还适用于任何类型成员。它有助于消除完全限定类型名称的歧义。
.
版本是 Java 编程语言中使用的正式符号,更具体地说,考虑以下代码:
class Animal {
void fly() {
}
}
使用该方法fly()
我们需要执行以下操作:
Animal animal = new Animal();
animal.fly();
然而,我们真正想要在文档中说明的是实例方法 fly()
的调用,因此我们表示Animal#fly()
,一个看似替代的方法是Animal.fly()
,但这将表示Java 代码中类的静态方法。Animal
因此Animal#fly()
,它被用于所有其他形式,总而言之,替代方案将是:
Animal.fly()
,但是这可能意味着静态方法。animal.fly()
, 但是没有类叫做animal
.作为旁注,值得注意的是,从 Java 8 开始,我们实际上可以直接在 Java 代码中执行这些操作,方法是:
Runnable animalFly = Animal::fly;
这里我们也引用了该Animal#fly()
方法,但是 javadoc 比 Java 8 早了很长时间。
MyType#myMethod()
是一种语法,JavaDoc
以便您的文档可以链接到不同方法的文档。
例如 Object.equals() 的 javadoc 包含链接到 Object.hashCode() 方法的文本,因为它们是相关的。
/**
* ...
*
* @see Object#hashCode()
*/
public boolean equals(Object obj)
其中 MyType.myMethod() 是 Java 代码中用于调用方法的实际语法中的 syntx。