我正在试验这段代码:interface Callee {
public void foo(Object o);
public void foo(String s);
public void foo(Integer i);}class CalleeImpl implements Callee
public void foo(Object o) {
logger.debug("foo(Object o)");
}
public void foo(String s) {
logger.debug("foo(\"" + s + "\")");
}
public void foo(Integer i) {
logger.debug("foo(" + i + ")");
}}Callee callee = new CalleeImpl();Object i = new Integer(12);Object s = "foobar";Object o = new Object();callee.foo(i);
callee.foo(s);callee.foo(o);
这个指纹foo(Object o)三次。我期望方法选择考虑真实(而不是声明的)参数类型。我是不是遗漏了什么?有没有办法修改这段代码以便它可以打印foo(12), foo("foobar")和foo(Object o)?
基于参数实数类型的过载方法选择