好的,题目已经说得很清楚了...
我知道这两种形式都是指方法,但我不明白#
在另一种形式中有何作用。
好的,题目已经说得很清楚了...
我知道这两种形式都是指方法,但我不明白#
在另一种形式中有何作用。
哈希字符(#)不是Java语言的一部分。
它在javadoc中具有特殊用途。 规范指出:
package.class#member 是任何有效的程序元素名称,即引用的包,类,接口,构造函数,方法或字段名称,除了在成员名称之前的字符应该是井号(#)。
并且
如上所述,井号(#)而不是点(.)将成员与其类分开。这使Javadoc工具能够解决歧义问题,因为点还分隔类,嵌套类,包和子包。但是,Javadoc工具通常是宽松的,如果您知道没有歧义,则会正确解析点,尽管会打印警告。
这种表示法不仅适用于方法,也适用于任何类型成员。它有助于从完全限定的类型名称中消除歧义。
static
和非static
方法,因此通过这种方式区分它们并不是很重要。 - Sotirios Delimanolis.
版本是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的时间比Java 8早很多。
#
只用于文档吗?还是说它用于表示实例方法?为什么要提到方法引用? - Sotirios Delimanolisfly()
是类Animal
的静态方法,那么在javadoc中我们仍然将其表示为Animal#fly()
吗? - starrietMyType#myMethod()
是用于JavaDoc
的语法,以便您的文档可以链接到不同方法的文档。
例如,Object.equals()的javadoc包含文本,以链接到Object.hashCode()方法,因为它们是相关的。
/**
* ...
*
* @see Object#hashCode()
*/
public boolean equals(Object obj)
而 MyType.myMethod() 是在 Java 代码中调用该方法的实际语法。
MyType
中定义的方法”,而点更多地用于实际方法调用,但我不太确定“真正”的含义是什么。 - awksp