我对参数传递有疑问。在此示例中,methodTwo想要调用methodOne,但只使用x和y值,而不是Color颜色。当我尝试这样做时,我在Eclipse中得到一个错误“类型'示例类名'中的方法methodOne(double x,double y,Color color)不适用于参数(double,double))”
如果方法不完全使用methodOne的所有参数,那么可以不调用另一个方法吗?
private void methodOne (double x, double y, Color color){
statements...;
}
private void methodTwo (x, y ){
methodOne(x, y);
statements...;
}
答案 0 :(得分:1)
您需要使用所有参数来调用method1。 (参数顺序和参数类型也很重要)
如果您没有第三个参数,可以将method1用作
private void methodTwo (x, y ){
method 1(x, y, null);
statements...;
}
答案 1 :(得分:1)
在您的代码中如下: -
private void methodTwo (x, y ){
methodOne(x, y); //Now this will show error , because parameter not matching
statements...;
}
如果您不想传递第3个参数,则会显示错误。因此,您必须传递第3个参数,并且为了您的目的,您可以传递null
,因为您没有在函数定义中使用第3个参数。
Ist解决方案: -
private void methodTwo (x, y ){
methodOne(x, y,null);
//statements...;
}
第二个解决方案,您可以使用以下2个参数重载此methodOne
: -
private void methodOne(double x, double y, Color color){
//statements... same job;
}
private void methodOne(double x, double y){
//statements...same job;
}
现在,当您使用2参数调用methodOne
方法时,如下所示: -
private void methodTwo (x, y ){
methodOne(x,y); // Now the overloaded method will call
//statements...;
}
答案 2 :(得分: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)
答案 3 :(得分:0)
如果方法2没有使用方法1的所有参数,方法2是否可以不调用另一个方法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...;
}