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