Example
class VaragOverload{ void print(int ... a){ for(int i=0; i < a.length; i++){ System.out.println(a[i]); } } void print(boolean ... a){ for(int i=0; i < a.length; i++){ System.out.println(a[i]); } } public static void main(String args[]){ VaragOverload obj = new VaragOverload(); obj.print(1,2,3); obj.print(true, false, true); } }
Output
1 2 3 true false true
Ambiguity
while using varargs
Consider
the above example, there is a problem in that. Try to call the method
“print” with no arguments, then compiler throws the error, since
it can't differentiate which overloaded method, it should call.
Example
class VaragOverload{
void print(int ... a){
for(int i=0; i < a.length; i++){
System.out.println(a[i]);
}
}
void print(boolean ... a){
for(int i=0; i < a.length; i++){
System.out.println(a[i]);
}
}
public static void main(String args[]){
VaragOverload obj = new VaragOverload();
obj.print(1,2,3);
obj.print(true, false, true);
obj.print();
}
}
When
you try to compile, compiler throws the below error
VaragOverload.java:20: error: reference to print is ambiguous, both method print(int...) in VaragOverload and method print(boolean...) in VaragOverload match obj.print(); ^ 1 error
No comments:
Post a Comment