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
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
type, final, and synchronized, do not contribute
a method's signature.