Foo
これらのメソッドを提供するクラスを使用しています:
String overloadedMethod(Object)
String overloadedMethod(Goo)
Java はレシーバー以外の引数で静的にディスパッチするため、 my value
(これは ですが、Object
動的な type を持つ可能性があります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
これを行うより良い方法はありますか?