Java 参数传递和方法调用

Java 参数传递和方法调用,java,eclipse,Java,Eclipse,我有一个关于参数传递的问题。在本例中,Method2希望调用methodOne,但只使用x和y值,而不使用颜色。当我尝试这样做时,我在Eclipse中遇到了一个错误“类型“example class name”中的methodOne(双x,双y,彩色)方法不适用于参数(双y,双))”如果methodOne没有完全使用methodOne的所有参数,methodOne能否不调用另一个methodOne private void methodOne (double x, double y, Color

我有一个关于参数传递的问题。在本例中,Method2希望调用methodOne,但只使用x和y值,而不使用颜色。当我尝试这样做时,我在Eclipse中遇到了一个错误“类型“example class name”中的methodOne(双x,双y,彩色)方法不适用于参数(双y,双))”

如果methodOne没有完全使用methodOne的所有参数,methodOne能否不调用另一个methodOne

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

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

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

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字母

标识符:
IdentifierChars,但不是关键字或BooleanLiteral或NullLiteral
识别卡:
爪哇字母
IdentifierChars JavaletterDigit
JavaLetter:
作为Java字母的任何Unicode字符(见下文)
JavaLetterOrdGit:
作为Java字母或数字的任何Unicode字符(见下文)

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

如果没有第三个参数,可以将method1用作

private void methodTwo (x, y ){
  method 1(x, y, null);
  statements...;
}
如果方法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...;
    }

在您的代码中,如下所示:-

  private void methodTwo (x, y ){
      methodOne(x, y);  //Now this will show error , because parameter not matching
      statements...;
    }
如果您不想传递第三个参数,则它将显示错误。因此,您必须传递第三个参数,并且出于您的目的,您可以传递
null
,因为您在函数定义中没有使用第三个参数

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...;
}

这是什么?方法1(x,y);这是一个有效的方法。请更正它。@JDeveloper我意识到我的错误并编辑了它。很好的信息谢谢。选择一种方法比选择另一种方法有哪些优点或缺点?是的@JessicaM。基本上,当您选择方法重载时,您的应用程序或目的必须是多个结果。可能是所有重载方法的输出略有不同。但出于您的目的,您应该使用第一种选择。Happy voteing:)