【发布时间】:2010-12-07 00:54:10
【问题描述】:
我正在试验这段代码:
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)?
【问题讨论】: