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 であっても A は I を継承します。