Java “是什么意思?”#&引用;在MyType中#myMethod()和与“";的差异&引用;与MyType.myMethod()中的相同
好吧,一切都在标题中Java “是什么意思?”#&引用;在MyType中#myMethod()和与“";的差异&引用;与MyType.myMethod()中的相同,java,syntax,vocabulary,Java,Syntax,Vocabulary,好吧,一切都在标题中 我知道这两种形式都是指方法,但我不明白 > 添加到另一种形式。 < p> .版本是java编程语言中使用的形式符号,更具体地,考虑以下代码: class Animal { void fly() { } } 使用方法fly()我们需要执行以下操作: Animal animal = new Animal(); animal.fly(); 然而,我们真正想在文档中注明的是调用实例方法fly(),因此我们将Animal#fly(),一个看似替代的方法是Ani
我知道这两种形式都是指方法,但我不明白<代码> > <代码>添加到另一种形式。
< p> <代码> .<代码>版本是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
Runnable animalFly = Animal::fly;
这里我们还引用了Animal#fly()
方法,但是javadoc比Java8早了很长一段时间。MyType#myMethod()
是javadoc
的语法,因此您的文档可以链接到不同方法的文档
例如,Object.equals()的javadoc包含链接到Object.hashCode()方法的文本,因为它们是相关的
/**
* ...
*
* @see Object#hashCode()
*/
public boolean equals(Object obj)
其中as MyType.myMethod()是调用该方法的Java代码中实际语法usd的syntx。哈希字符(#)不是Java语言的一部分
它在javadoc中有特殊用途。美国
包。类#成员是
引用——包、类、接口、构造函数、方法或
字段名--除了成员名前面的字符
应该是散列字符(#)
及
如上所述,散列字符(#)而不是点(.)分隔
成员。这使Javadoc工具能够解析
模糊性,因为点也分隔类,嵌套类,
包和子包。但是,Javadoc工具通常是
如果你知道没有,你会正确地解析一个点
模棱两可,尽管它会打印一条警告
该符号不仅适用于方法,还适用于任何类型成员。它有助于消除完全限定类型名称的歧义。如果内存可用,则前者是Javadoc表单。我试着用它来表示“在
MyType
中定义的方法”,而点更多地用于实际的方法调用,但我不确定“真实”的含义是什么。我觉得你的答案不够清楚。你是说#
只在文档中使用吗?你是说它是用来表示实例方法的吗?为什么要提到方法参考?谢谢。总之:为了在一般文档中进行区分,Animal#fly()和Animal.fly()分别表示一个实例和一个静态调用。而且,其他海报也提到:Javadoc还使用#来消除成员名称与其限定符之间的歧义,但没有静态或实例含义。那么,静态方法呢?如果fly()
是类Animal
的静态方法,那么我们仍然在javadoc中表示它Animal\fly()
?谢谢。似乎这个答案与JavaDocAPI有关。正如skiwi所提到的,在一般性讨论中区分静态成员和实例成员怎么样?@mins我想你们可以做到,但我看不出有什么意义。您不能同时拥有具有相同签名的静态方法和非静态方法,因此以这种方式区分它们并不是什么大问题。