引用Java方法的准则是什么?

时间:2015-08-26 12:42:52

标签: java methods

当我需要在讨论中引用Java方法时,我曾经这样写过:

Object.equals(Object)

然而,目前尚不清楚是否:

  • 该方法是静态的。
  • 该方法具有返回类型。
  • 该方法具有可见性修饰符。
  • 该方法可能会抛出异常。

在引用Java方法时是否有编写Java方法的标准?

3 个答案:

答案 0 :(得分:2)

最完整的版本是使用修饰符和返回类型编写方法的整个签名,并最终抛出异常,如标准的javadoc:

public boolean equals(Object obj)

显然,它还取决于您使用引用的上下文。尝试尽可能完整,不再需要。

答案 1 :(得分:1)

假设这个问题指的是在元上下文中讨论Java代码时如何引用的难度。 E.g。

  

您应该在此上下文中使用StringBuilder.append()方法而不是++运算符,因为......

现在,我们可以谈论的方法可以通过以下方式进行分类:

  • 静态与非静态
  • 有参数vs没有参数
  • 具有返回值vs具有void类型
  • public vs private vs other access

在上下文中,上述示例足以明确,因为名为'append'的方法之间没有很大的重叠。但是,如果它被提升到一些实际的Java代码中,它就不可能编译,原因如下:

  • 有问题的'append'方法需要参数
  • 它是一种非静态方法,上面的用法看起来像静态方法调用。

另外,因为它像静态方法调用一样编写,但是引用了实例方法调用,读者可能会感到困惑。

在很多情况下,通常可以找到一个解决方案,通过提供实际的代码示例来消除所有歧义。

  

尝试这种方法:

     

StringBuilder sb = new StringBuilder(); sb.append(textToAppend);

这个问题是不必要的冗长,而且变得有点笨拙和不方便。此外,它失去了以“元”方式讨论方法的能力,并且没有明显的地方可以提供链接供参考。

如果您所引用的方法的类是已知的,则删除所有歧义的一种方法是提供Java API Specification中给出的完整方法签名,包括访问修饰符。 E.g。

  

尝试使用public StringBuilder append(String str)实例的StringBuilder方法。这避免了重复......

的过程

这具有一致性和显示所有相关信息的优点,但输入的确更加努力。

如果上下文意味着没有歧义,则省略以下任何内容是合理的:

<强> public StringBuilder append(String str)

如果访问修饰符与讨论无关,则可以省略public

public StringBuilder append(String str)

如果返回类型明显,或明确,或与讨论无关,则可以省略它。

public StringBuilder append(String str )

如果参数名称与讨论无关(通常是这种情况),则可省略参数名称。

public StringBuilder append (String str)

如果意图中没有歧义或者它们不相关,您可以完全省略参数。

  

尝试使用append实例的StringBuilder方法。这避免了重复......

的过程

这可能是最明确的方法,同时避免不必要的信息。也就是说,我的第一个例子中的符号非常方便,通常不会导致混淆。

最终归结为品味问题,但避免歧义应该是最重要的考虑因素,为此,采用相对符合Java API规范本身的方法似乎是一个好主意。

答案 2 :(得分:-2)

这是一本很好的指南:Defining Methods

没有返回类型的方法将声明为void,而具有返回类型的方法将返回类型作为方法声明的一部分。

可以从另一个类调用静态方法(在类中),而无需创建类的实例。