如何在Java中识别方法的签名?

时间:2016-09-08 14:24:56

标签: java signatures

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

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

我必须给出方法addOn();

的签名

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

4 个答案:

答案 0 :(得分:3)

这实际上取决于"准确度"你需要的。

当你与同事非正式地交谈时,那么"签名"可能包含人类可能感兴趣的所有信息:

  1. 返回类型
  2. 方法名称
  3. 参数类型(包括订购!)
  4. 投掷列表
  5. (注释)
  6. 然而,当你来自编译器构造函数或者JVM compiler观点时,答案是不同的;在这种情况下,只有第2项和第3项很重要;其他任何内容 签名的一部分。

答案 1 :(得分:2)

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

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

public void addOn(Fraction other) {

}

签名将是addOn(Fraction)。

这是C ++与Java之间的区别之一,C ++签名中也包含返回类型但在java返回类型中不是方法签名的一部分。 所以在C ++方法的情况下,上述方法的签名将为void addOn(Fraction);

答案 2 :(得分:1)

如果您想将Fraction作为参数传递给班级。首先,您需要创建Fraction的引用,如

  

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

然后你可以传递它;

  

addOn(ref); //分数类的参考作为参数

答案 3 :(得分:0)

我相信,你应该参考this article

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

  1. 方法名称
  2. 参数类型,即参数的类型和顺序
  3. 所有其他部分,例如异常,返回类型,注释都是方法声明的一部分,而不是签名。

    除了这些语法之外,在选择方法名时也应考虑语义。

    • 方法名称应遵循驼峰套管
    • 方法名称应该有意义
    • 方法名称应以动词
    • 开头

    我建议您浏览java coding guidelines