If Class X has two methods:
void foo(Object i);
void foo(Integer i);
then: Object test = new Integer(4);
X x = new X();
x.foo(test);
will invoke 'void foo(Object o);' based on the compile time type of test.Java does do dispatch based on the runtime type of X - but it is quite limiting once you are used to having proper multiple dispatch at your disposal.
(caveat: not in front of a javac - this is from memory).