java - 如何在不使用强制转换的情况下选择要调用的方法的重载版本?

标签 java methods overloading dispatch

我对 Java 重载方法有疑问。

假设我有一个重载方法 foo:

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

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

我怎样才能实现像

这样的功能
public static String useString() {
    return(foo("useString"));   
}
public static String useObject() {
    return(foo("useObject"));   
}

哪一个使用重载的字符串方法,一个使用重载的对象方法?

foo-Method 的调用应该使用字符串输入。 (这意味着我不想和像

这样的 Actor 一起工作
return(foo((Object)"useObject")); 

也许你能帮我解决这个问题

编辑:

以上只是一个练习的例子。我试图更好地理解 OverloadsDispatch 并且正在寻找调用(和选择)overload 方法的替代解决方案。

最佳答案

如果我们暂时搁置这背后的动机并尝试回答直接的问题,您可以创建对象引用而不是使用显式强制转换。

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

虽然最终结果是相同的,但您可以避免使用这种方法进行显式强制转换

关于java - 如何在不使用强制转换的情况下选择要调用的方法的重载版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46976973/

相关文章:

java - 访问Java中多个类之间的变量

java - Java 中 String 列表和 String[] 列表,或 T 列表和 T[] 列表的通用方法

C++歧义重载问题

java - 在 Spring Boot 中通过 @Value 检索 application.properties 值

java - 为什么 @Autowired(required=false) 不适用于 @Configuration bean?

java - 使 thread.sleep() 停止前面的代码

javac 类路径顺序与 Oracle 文档相矛盾?

java - 如何使用 ObjectWeb ASM 获取方法签名?

python - 如何将类对象的所有方法的结果作为一个列表返回?

c# - 为什么C#在多态中不考虑函数的返回类型?