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
methods
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:
-
use different method names, and avoid overloading altogether
-
retain overloading, but ensure each method has a distinct number of arguments
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.
Reminder:
Overloading requires methods with distinct
signatures.
The signature
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
type, final
, and synchronized
, do not contribute
to
a method's signature.