在下面的代码中
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});,为什么?