이 코드를 실험하고 있습니다.
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)
?