我已经学习了java基础知识已经有一段时间了,我还在学习它。我正在学习函数重载中varArgs的歧义。但是当我试图编写一个程序来看它发生时,我首先做了一个浮点数和int重载,但是这并没有给出歧义错误并执行int函数!!然后只是为了测试,我将一个函数参数更改为String,它完全给了我错误!!
class VarArgsOverlodingAndIssues {
public static void main(String[] com) {
Compiler a = new Compiler();
Compiler b = new Compiler();
a.setYearlyRatings(1,1,1,1,1);
b.setYearlyRatings(1f,1f,1f,1f);
b.setYearlyRatings(); /* this is not giving me the error in int and float*/
}
}
class Compiler {
void setYearlyRatings(int ... data) { // Changed this to boolean and it gave me the error
if(data.length < 1)
System.err.println("The data list passed is emptyf");
for( int i = 0; i < data.length; i++)
System.out.println("Ratings of year " + (i + 1) + ": " + data[i]);
}
void setYearlyRatings(float ... data) {
if(data.length < 1)
System.err.println("The data list passed is emptyint");
for( int i = 0; i < data.length; i++)
System.out.println("Ratings of yearf " + (i + 1) + ": " + data[i]);
}
}
为什么它不会在float和int重载中给我一个错误?我完全不知道!!我对问题大多没有信心,我可能会问一个错误的问题。但我非常困惑...... plzz帮助!!