假设这个问题是指在元上下文中讨论 Java 代码时如何引用方法的困难。例如
在这种情况下,您应该使用StringBuilder.append() 方法而不是++ 运算符,因为...
现在,我们可以讨论的一种方法可以分为以下几种方式:
- 静态与非静态
- 有参数 vs 没有参数
- 有返回值 vs 有 void 类型
- 公共与私人与其他访问权限
在上下文中,上面的示例足以明确,因为名为“append”的方法之间没有很大的重叠。然而,如果它被提升为一些实际的 Java 代码,它可能无法编译,原因如下:
- 有问题的“追加”方法需要一个参数
- 它是一个非静态方法,上面的用法看起来像一个静态方法调用。
另外,因为写成静态方法调用,但指的是实例方法调用,读者可能会感到困惑。
在很多情况下,通常可以找到一个解决方案,通过给出一个实际的代码示例来消除所有的歧义。
试试这个方法:
StringBuilder sb = new StringBuilder();
sb.append(textToAppend);
这样做的问题是不必要的冗长,并且变得更加笨拙和不方便。此外,它失去了以“元”方式讨论方法的能力,并且没有明显的地方可以放置链接以供参考。
如果您所指的方法的类是已知的,那么消除所有歧义的一种方法是给出Java API Specification 中给出的完整方法签名,包括访问修饰符。例如
尝试使用StringBuilder 实例的public StringBuilder append(String str) 方法。这样可以避免重复...的过程
这具有一致性和显示所有相关信息的优点,但它确实变得更费力。
如果上下文意味着没有歧义,则省略以下任何一项都是合理的:
publicStringBuilder append(String str)
如果访问修饰符与讨论无关,您可以省略 public。
publicStringBuilderappend(String str)
如果返回类型是显而易见的、明确的或与讨论无关的,则可以省略它。
public StringBuilder append(Stringstr)
如果参数名称与讨论无关(通常是这种情况),您可以省略参数名称。
public StringBuilder append(String str)
如果意图没有歧义或它们不相关,您可以完全省略参数。
尝试使用StringBuilder 实例的append 方法。这样可以避免重复...的过程
这可能是最明确的方法,同时避免了不必要的信息。也就是说,我的第一个示例中的符号非常方便,通常不会导致混淆。
归根结底,这取决于口味,但避免歧义应该是最重要的考虑因素,为此,采用相对符合 Java API 规范本身的方法似乎是个好主意。