【发布时间】:2010-09-27 02:45:49
【问题描述】:
我正在使用一个提供这些方法的类Foo:
String overloadedMethod(Object)
String overloadedMethod(Goo)
由于 Java 在 non-receiver 参数上静态分派,我不能只传递我的 value(这是一个 Object,但可能具有动态类型 Goo)并依赖 JVM 动态选择“正确"方法。
这是我目前(丑陋的)解决方法:
Object value = ...;
Foo foo = new Foo();
if (value instanceof Goo) {
Goo gooValue = (Goo) value;
return foo.overloadedMethod(gooValue); // -> overloadedMethod(Goo)
} else {
return foo.overloadedMethod(value); // -> overloadedMethod(Object)
}
有没有更好的方法在不修改Foo(包含重载方法的类)中的代码?
【问题讨论】:
标签: java overloading multiple-dispatch method-dispatch dynamic-dispatch