我无法理解这个问题,以及对 SCJP 1.6 自测问题答案的解释。这是问题所在:
class A { }
class B extends A { }
public class ComingThru {
static String s = "-";
public static void main(String[] args) {
A[] aa = new A[2];
B[] ba = new B[2];
sifter(aa);
sifter(ba);
sifter(7);
System.out.println(s);
}
static void sifter(A[]... a2) { s += "1"; }
static void sifter(B[]... b1) { s += "2"; }
static void sifter(B[] b1) { s += "3"; }
static void sifter(Object o) { s += "4"; }
}
结果是什么?答案是-434,但让我失望的是这本书的解释。它与本章前面解释的概念有很大不同。
“通常,最后选择重载的 var-args 方法。请记住,数组是对象。最后,可以将 int 装箱为 Integer,然后将其“扩展”为 Object。”
拆分一下,有人可以进一步定义该解释吗?
- 通常,最后选择重载的 var-args 方法。
- 数组是对象(我实际上明白了,但为什么这与这个问题有关)。
- 可以将 int 装箱为 Integer,然后将其“扩展”为 Object。
谢谢!