我有一种行为,我不明白在Java中重载。使用Java中的接口重载方法
这里是我的代码:
interface I {}
class A implements I {}
class B {
public void test(I i) {}
public void test (A a) {}
}
当我调用下面一行:
I a = new A();
b.test(a);
我想调用的方法是test(A)
但明显这是test(I)
。
我不明白为什么。在运行时我的变量a
是甲甚至A继承I.
http://en.wikipedia.org/wiki/Multiple_dispatch –
因为这个决定是在编译时完成的 - 并且在编译时没有办法知道'a'是否是'A'或其他东西(例如它可能取决于用户输入)。可以肯定的是'a'将会是'I'。 – assylias