为啥有些人在通信中使用 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.toString Object 将是一个实例,否则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?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 std::thread 阻塞执行?

为啥我们需要避免在 ASP.NET MVC 视图中直接使用 IQueryable?

css定义为啥不全用CLASS而要用ID

为啥***删除后指针指向0? [复制]

当从 `torch.class` 方法将`self` 返回到控制台时,为啥 Lua/Torch 会耗尽内存?

这个div的margin为啥不起作用?