У меня проблемы с пониманием этого вопроса и объяснения ответа на вопрос самопроверки 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
может быть упакован в целое число, а затем
"расширен" до объекта. "
Разбивая это, кто-то может дать дальнейшее определение этому объяснению?
- Обычно перегруженные методы var-args выбираются последними.
- Массивы - это объекты (я на самом деле понимаю, но почему это относится к этому вопросу).
- Int может быть упаковано в Integer, а затем "расширено" до Object.
Спасибо!