Overloading can be tricky
Overloading methods should be done with care. The compiler decides
which version of an overloaded method will be called based on declared
compile-time type, not run-time type. For the case in which overloaded
have the same number of arguments, the rules regarding this
decision can sometimes be a bit tricky.
If there may be confusion, you may simplify the design:
In addition, it's recommended that varargs
not be used when a method is overloaded, since this makes it more difficult
to determine which overload is being called.
use different method names, and avoid overloading altogether
retain overloading, but ensure each method has a distinct number of arguments
Overloading requires methods with distinct
of a method includes its name and the ordered list of its argument types.
All other items appearing in a method header, such as exceptions, return
synchronized, do not contribute
a method's signature.