以下のコードで
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});、なぜですか?