为什么歧义不适用于int和float varArgs重载?

时间:2017-04-10 13:31:20

标签: java variadic-functions overloading ambiguity

我已经学习了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帮助!!

0 个答案:

没有答案