public static void main(String[] a){
VarArgs obj = new VarArgs();
obj.add(1,2);
}
class VarArgs{
int add(int size, Integer... params){
}
}
此代码有效。但我认为这会产生歧义错误。因为铸造类型。
它是如何运作的?
答案 0 :(得分:6)
当两个方法同样适用时,会发生reference to call ambiguous
错误;事实上,修复该错误的一种常见方法是删除这两种方法中的一种。 (见Compiler error : reference to call ambiguous。)
在您的情况下,只有一种方法可以开始,因此没有歧义:2
只是自动装箱到Integer.valueOf(2)
,然后进入new Integer[] { Integer.valueOf(2) }
。