Java 为什么有些人在通信中使用Class#方法而不是Class.method?

Java 为什么有些人在通信中使用Class#方法而不是Class.method?,java,forum,mailing-list,Java,Forum,Mailing List,在用Java编写方法时(即在论坛、邮件列表、问题跟踪器等中),许多人使用“#”符号而不是Java的本机运算符将方法名与类名分开;例如,人们指的是Object#toString,而不是Object.toString。这个语法从何而来?它是链接到另一个类的方法时javadoc注释中使用的符号 编辑 要收集评论中提供的其他信息,请执行以下操作: @Hugo指出,#符号依次来自HTML锚 @maksimov指出,Object.method是调用静态方法的Java语法,这可能会产生误导 更新 Java

在用Java编写方法时(即在论坛、邮件列表、问题跟踪器等中),许多人使用“#”符号而不是Java的本机
运算符将方法名与类名分开;例如,人们指的是
Object#toString
,而不是
Object.toString
。这个语法从何而来?

它是链接到另一个类的方法时javadoc注释中使用的符号

编辑

要收集评论中提供的其他信息,请执行以下操作:

  • @Hugo指出,
    #
    符号依次来自HTML锚
  • @maksimov指出,
    Object.method
    是调用静态方法的Java语法,这可能会产生误导
更新


Java 8为方法引用带来了一种新的语法,这种语法现在似乎越来越流行,因此
Object#toString
现在倾向于编写
Object::toString

这反过来又来自HTML锚,它们使用这种符号表示,因为如果生成了HTML javadoc,则每个方法都是锚。所有这些都是有意义的。我可能现在就开始使用它,但我不得不承认它很难看,而且我发现它更难阅读。但是在静态方法调用的情况下,它确实提供了消除歧义的功能。但是如果对象是小写的呢?小写或大写是不相关的。然而,基于javadoc,类将是大写的,一个小写的对象实例:
objectobj
。当您想要引用方法实现时,您应该使用
Object\method
。否则,如果您正在谈论一个特定的调用,那么您可以使用
obj.method()
。点表示法可以被视为代码,其中在Object.toString
Object
中将是一个实例,否则
toString
将是一个静态方法。破折号符号是Javadoc,所以很清楚。