How to select which overloaded version of a method to call without using a cast?

Aiko West :

i have a question to Java Overload Methods.

Suppose i have an overload methods foo:

public static String foo(String x) {
    return "foo-String: " + x;
}

public static String foo(Object x) {
    return "foo-Object: " + x;
}

How can I implement to functions like

public static String useString() {
    return(foo("useString"));   
}
public static String useObject() {
    return(foo("useObject"));   
}

of which one uses the overloaded string method, and one the overloaded object method?

The call of the foo-Method should use an String input. (that means i do not want to work with a cast like

return(foo((Object)"useObject")); 

Maybe you can help me with this problem

EDIT:

Above, just is an example for an exercise. I am trying to understand Overloads and Dispatch better and was looking for alternative solution for calling (and selecting) an overload method.

CKing :

If we keep aside the motive behind this for a second and try to answer the direct question, you can create an object reference instead of using an explicit cast.

public static String useObject() {
    Object obj = "useObject";
    return foo(obj);   
}

While the end result is the same, you avoid the need to have an explicit cast with this approach.

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=469984&siteId=1