Überladene Methode-Auswahl, basierend auf dem parameter den Typ real

Ich experimentiere mit diesem code:

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);

Diese Drucke foo(Object o) drei mal. Ich erwarte, dass die Methode der Auswahl in Betracht zu ziehen, die tatsächlichen (nicht deklariert) parameter Typ. Bin ich etwas fehlt? Gibt es eine Möglichkeit, diesen code ändern, so dass es gedruckt werden foo(12), foo("foobar") und foo(Object o)?

InformationsquelleAutor Sergey Mikhanov | 2009-10-15

Schreibe einen Kommentar