次の例を参照してください。
interface I {}
class A implements I {}
class B implements I {}
class Foo{
void f(A a) {}
void f(B b) {}
static public void main(String[]args ) {
I[] elements = new I[] {new A(), new B(), new B(), new A()};
Foo o = new Foo();
for (I element:elements)
o.f(element);//won't compile
}
}
オーバーロードメソッドがアップキャストをサポートしないのはなぜですか?
実行時にオーバーロードが実装された場合、柔軟性が大幅に向上します。たとえば、Visitorパターンはより単純になります。Javaがこれを行うのを妨げる技術的な理由はありますか?