以下のコードで
class A {
public void v(int... vals) {
System.out.println("Super");
}
}
class B extends A {
@Override
public void v(int[] vals) {
System.out.println("Sub");
}
}
次にnew B().v(1, 2, 3);//print Sub rather than Super
、ばかげているがうまく機能する呼び出しを行うことができます。私がに変更B
した場合
class B {
public void v(int[] vals) {
System.out.println("Not extending A");
}
}
への呼び出しnew B().v(1, 2, 3);
は無効になります。と呼ぶ必要がありますがnew B().v(new int[]{1, 2, 3});
、なぜですか?