3

我相信我无法理解如何在 Java 中给出方法的签名。例如,如果我的代码是:

public void addOn(Fraction other) {
      number = other.denominator * number + other.numerator * denominator;
      denominator = denominator * other.denominator;

我必须给出方法 addOn() 的签名;

此方法的签名是否只是 addOn(Fraction);?

4

4 回答 4

3

这实际上取决于您需要的“准确性”水平。

当您与您的同事进行非正式交谈时,“签名”可能会包含人类可能会感兴趣的所有信息:

  1. 返回类型
  2. 方法名称
  3. 参数类型(包括它们的顺序!)
  4. 抛出列表
  5. (注释)

然而,当您从编译器构造器或JVM 编译器的角度出发时,答案是不同的;在这种情况下,只有第 2 项和第 3 项很重要;其他任何内容都不是签名一部分。

于 2016-09-08T14:31:24.260 回答
2

在 Java 中,方法签名仅包含方法的名称和参数的数据类型,没有其他内容。

例如,在您上面发布的方法中:

public void addOn(Fraction other) {

}

签名将是 addOn(Fraction )。

这是 C++ 和 java 之间的区别之一,C++ 签名也包含返回类型,但在 java 中,返回类型不是方法签名的一部分。因此,如果上述方法的 C++ 方法签名将是 void addOn(Fraction);

于 2016-09-08T14:32:25.670 回答
1

如果你想Fraction作为参数传递给类。首先,您需要创建Fraction类似的引用

Fraction ref =new Fraction();//假设Fraction类有默认构造函数

然后您可以将其传递为;

addOn(ref);//Fraction类的Ref作为参数

于 2016-09-08T14:32:23.943 回答
0

我相信,你应该参考这篇文章

它明确指出方法签名仅包含:

  1. 方法名称
  2. Parameter Types,即参数的类型和顺序

所有其他部分,如异常、返回类型、注释都是方法声明的一部分,而不是签名。

除了这些语法方面的东西,在选择方法名称时还应该考虑语义。

  • 方法名称应遵循驼峰式大小写
  • 方法名应该有意义
  • 方法名应该以动词开头

我建议您阅读java 编码指南

于 2016-09-08T14:56:16.397 回答