Java Reference
In-Depth Information
public static void main(String[] args) {
displayBooleans(true, false);
}
}
When run, this program outputs
Overloaded method invoked
because the nonvariable arity definition is more specific and consequently a better fit for
the provided arguments. However, this complexity is best avoided.
Compliant Solution
To avoid overloading variable arity methods, use distinct method names to ensure that the
intended method is invoked, as shown in this compliant solution:
Click here to view code image
class Varargs {
private static void displayManyBooleans(boolean... bool) {
System.out.print("Number of arguments: "
+ bool.length + ", Contents: ");
for (boolean b : bool) {
System.out.print("[" + b + "]");
}
}
private static void displayTwoBooleans(boolean bool1,
boolean bool2) {
System.out.println("Overloaded method invoked");
System.out.println("Contents: ["
+ bool1 + "], [" + bool2 + "]");
}
public static void main(String[] args) {
displayManyBooleans(true, false);
}
}
Applicability
Injudicious use of overloaded variable arity methods may create ambiguity and diminish
code readability.
Search WWH ::




Custom Search