This code has ambiguous behaviour as per ob.fn() call which is quite clear as per the function definition. But when changed the function definition from 'boolean' to 'double' the behaviour was quite unexpected to me.
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);
}
}
But why isn't the ambiguity being shown in this ?
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);
}
}
After changing 'boolean' to 'double' , what led to disappearance of ambuigity?