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
}
}
为什么重载方法不支持向上转型?
如果运行时实现了重载,将提供更大的灵活性。例如,访问者模式将更加简单。是否有任何技术原因阻止Java实现这一点?