根据ob.fn()调用,此代码具有不明确的行为,根据函数定义,该代码非常清楚。但是当从' boolean'更改函数定义时到'加倍这种行为让我很意外。
public class Varargs {
public void fn(boolean ...a){
System.out.println("calling double fn");
for(boolean i:a){
System.out.print(i+" ");
}
System.out.println("\n");
}
public void fn(int ...a){
for(int i:a){
System.out.print(i+" ");
}
System.out.println("\n");
}
public static void main(String[] args) {
System.out.println("Entering 5 numbers.");
Varargs ob = new Varargs();
ob.fn();
ob.fn(2,5,5,3,2,2,3,4,3,3);
}
}
但为什么不显示出歧义呢?
public class Varargs {
public void fn(double ...a){
System.out.println("calling double fn");
for(double i:a){
System.out.print(i+" ");
}
System.out.println("\n");
}
public void fn(int ...a){
for(int i:a){
System.out.print(i+" ");
}
System.out.println("\n");
}
public static void main(String[] args) {
System.out.println("Entering 5 numbers.");
Varargs ob = new Varargs();
ob.fn();
ob.fn(2,5,5,3,2,2,3,4,3,3);
}
}
更改' boolean'到'加倍是什么导致了气氛的消失?