0

I have a question about parameter passing. In this example methodTwo wants to call methodOne but only use the x, and y values and not the Color color. When I try to do this i get a error in Eclipse "the method methodOne(double x, double y, Color color) in the type 'example class name' is not applicable for the arguments (double, double))"

Can methodTwo not call another methodOne if it does not use exactly all of the arguments of methodOne?

private void methodOne (double x, double y, Color color){
   statements...;
  }

private void methodTwo (x, y ){
  methodOne(x, y);
  statements...;
}
4

4 回答 4

1

在您的代码中如下: -

  private void methodTwo (x, y ){
      methodOne(x, y);  //Now this will show error , because parameter not matching
      statements...;
    }

如果您不想传递第三个参数,那么它将显示错误。因此,您必须传递 3rd 参数,并且您可以传递 3rd 参数null,因为您没有在函数定义中使用 3rd 参数。

解决方案:-

private void methodTwo (x, y ){
      methodOne(x, y,null); 
      //statements...;
    }

第二种解决方案,您可以methodOne使用 2 个参数重载它,如下所示:-

private void methodOne(double x, double y, Color color){
   //statements... same job;
  }

private void methodOne(double x, double y){
   //statements...same job;
  }

现在,当您methodOne使用 2 个参数调用该方法时,如下所示:-

private void methodTwo (x, y ){
  methodOne(x,y); // Now the overloaded method will call
  //statements...;
}
于 2013-05-16T02:52:01.793 回答
1

您需要使用所有参数来调用method1。(参数的顺序和参数的类型也很重要)

如果您没有第三个参数,您可以使用 method1 作为

private void methodTwo (x, y ){
  method 1(x, y, null);
  statements...;
}
于 2013-05-16T02:35:16.707 回答
0

如果方法 2 不完全使用方法 1 的所有参数,它是否可以不调用另一个方法 1?

它可以,但你必须像这样覆盖方法1:

    private void method 1 (double x, double y, Color color){
       statements...;
      }

    private void method 1 (double x, double y){
       statements...;
      }

    private void method 2 (x, y ){
      method 1(x, y);
      statements...;
    }
于 2013-05-16T02:37:06.493 回答
0

方法名称必须是一个单词。您还需要提供最后一个参数。

private void method1 (double x, double y, Color color){
   statements...;
  }

private void method2 (x, y ){
  method1(x, y, someColorOrNull);
  statements...;
}

来自 JLS,第 3.8 节“标识符”:

标识符是 Java 字母和 Java 数字的无限长度序列,其中第一个必须是 Java 字母。

Identifier:
    IdentifierChars but not a Keyword or BooleanLiteral or NullLiteral

IdentifierChars:
    JavaLetter
    IdentifierChars JavaLetterOrDigit

JavaLetter:
    any Unicode character that is a Java letter (see below)

JavaLetterOrDigit:
    any Unicode character that is a Java letter-or-digit (see below)
于 2013-05-16T02:35:00.967 回答