In many cases, invoking overloaded methods and constructors is the same as invoking non-overloaded methods and constructors, by providing the correct parameter list at compile time. However, for some types of parameter lists, the AVM uses a set of rules to disambiguate the correct method or constructor to call at run time. Thus, for certain data types, this results in a powerful form of overloading that depends on run-time conditions rather than coding at compile time to invoke the appropriate method. For more information, see
Calling an overloaded method or constructor.