为啥有些人在通信中使用 Class#method 而不是 Class.method?
Posted
技术标签:
【中文标题】为啥有些人在通信中使用 Class#method 而不是 Class.method?【英文标题】:Why do some folks use Class#method instead of Class.method in correspondence?为什么有些人在通信中使用 Class#method 而不是 Class.method? 【发布时间】:2012-06-30 03:49:12 【问题描述】:在编写 Java 中的方法时(即在论坛、邮件列表、问题跟踪器等中),许多人使用“#”符号而不是 Java 的原生 .
运算符将方法名称与类名称分开;例如,人们引用Object#toString
而不是Object.toString
。这个语法从何而来?
【问题讨论】:
点符号可以被视为代码,其中 Object.toStringObject
将是一个实例,否则toString
将是一个静态方法。破折号表示法是 Javadoc,所以很清楚。
【参考方案1】:
这是 javadoc cmets 在链接到另一个类的方法时使用的符号。
编辑
要收集 cmets 中提供的其他信息:
@Hugo 指出,#
符号又来自 html 锚
@maksimov 指出 Object.method
是调用静态方法的 Java 语法,这可能会产生误导
更新
Java 8 为方法引用带来了一种新语法,现在似乎变得更流行了——所以Object#toString
现在倾向于写作Object::toString
。
【讨论】:
这又来自 HTML Anchors,使用这种表示法表示,因为如果生成的 HTML javadoc 中的每个方法都是一个锚。 一切都说得通。我现在可能会开始使用它,但我不得不承认它很丑,而且我发现它更难阅读。但它确实在静态方法调用的情况下提供了歧义。 但是如果对象是小写的呢? 大小写无关。但是基于 javadoc,类将是大写的,对象实例是小写的:Object obj
。当你想引用方法实现时,你应该使用Object#method
。否则,如果您正在谈论一个特定的电话,那么您可以使用obj.method()
。以上是关于为啥有些人在通信中使用 Class#method 而不是 Class.method?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我们需要避免在 ASP.NET MVC 视图中直接使用 IQueryable?