是不是歧义错误?

时间:2016-05-26 15:31:16

标签: java

public static void main(String[] a){
          VarArgs obj = new VarArgs();
          obj.add(1,2);
}

class VarArgs{
       int add(int size, Integer... params){
       }
}

此代码有效。但我认为这会产生歧义错误。因为铸造类型。

它是如何运作的?

1 个答案:

答案 0 :(得分:6)

两个方法同样适用时,会发生reference to call ambiguous错误;事实上,修复该错误的一种常见方法是删除这两种方法中的一种。 (见Compiler error : reference to call ambiguous。)

在您的情况下,只有一种方法可以开始,因此没有歧义:2只是自动装箱到Integer.valueOf(2),然后进入new Integer[] { Integer.valueOf(2) }