在文本中提到Java成员的正确方式是什么?

8
在回答问题时,我经常会提到方法名称和在线文档。我对如何在文本中引用方法名称感到困惑。
例如,我经常输入:
“应该使用String.equals()来比较两个字符串是否相等。”
然而,这有点误导人:
1.它使equals()看起来像是一个静态成员。 2.它使equals()看起来不需要任何参数。
为了完整起见,我想知道:
正确的引用静态成员和实例成员的方式是什么?
我见过这样的写法:
String.equals() String#equals() myString.equals()
有没有一种不考虑参数的方法来引用方法?
例如,在C语言中,foo(void)明确是一个零参数函数,foo()可以重新定义为具有不同参数集合。(?)
7个回答

5
如果您想要确切无误,您可以使用:
java.lang.String#equals(java.lang.Object)

或者更短的形式。
String#equals(Object)

这类似于Javadoc中使用的符号,有趣的是它看起来也很像链接到以以下内容结尾的文档:

String.html#equals(java.lang.Object)

编辑:这里是一个链接,链接到javadoc文档,它描述了如何使用引用。


还有没有不考虑参数的形式? - Matthew
2
如果只有一个同名方法,当然可以省略参数类型。毕竟,这是一种命名约定,而不是硬性规定。 - Jörn Horstmann

2
我发现将String类的equals方法文档链接equals放入内容中可以消除歧义。

嗯,我认为我们应该能够准确地引用成员,而不需要链接到文档。 - Matthew
@Matthew:为什么你想这样做呢?你在网上。超链接是引用另一个资源的一种被接受的方式。链接到它一次,任何后续提及都应该很清楚。 - Bill the Lizard
1
好吧,我并不想一直超链接到String#equals(Object)。我只是想提一下它。假装它不是答案的重点,而只是一个辅助方法。 - Matthew

2

如果没有明确说明myString是String类的实例,使用myString.equals()是毫无意义的。javadoc使用String#equals(),因此大多数开发人员都应该能够读懂和理解。这将是我的选择。


我也对通过String#equals()方法消除它是零参数方法的含义感兴趣。 - Matthew
1
你可以写“String#equals方法”——省略括号并添加单词“方法”——以指示对String类中命名为equals的某个方法(也许是多个方法之一)的非确定性引用。 - Ted Hopp

2

String.equals

如果您想要给参数类型String.equals(Object)

添加括号(equals())是C语言的一种写法,特别是ANSI C语言中,无参函数将被写成tostring(void) (我实际上太年轻了,无法记得K&R/PCC C)。C++修复了这个问题 - 因此()实际上是相当老派的。


这似乎意味着equals是一个静态成员,对吗? - Matthew
在Java中,“.”用于名称限定。这被称为“稍微限定的名称”。事实上,在堆栈跟踪中它呈现为一个点。 - Tom Hawtin - tackline

1

通常我会提及类和方法名称,并期望读者能够使用它来查找文档。也许这有点傲慢,我不知道。

如果我想要说明一个方法的哪个签名更好用,我通常会提供示例代码。这主要是因为我觉得这比手写描述更容易。


1

myString.equals()非常完美。它暗示了类型,并清楚地表明我们正在谈论一个实例。

你甚至可以添加:

myString.equals(aString)


我觉得这是向初学者举例的最佳方式。 - Matthew

0

当涉及到方法时,我使用"String.equals()"。这是为了人类读者,他们很可能会从上下文中知道你在谈论什么。如果可能会引起混淆,只需说"方法 String.equals()"

One should use String.equals() for comparing two strings for equality.

“说真的,谁会被这句话搞糊涂呢?所以别担心,这只是英语而已,没有编译器在对你大喊大叫。”

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接