Mam problem ze zrozumieniem tego pytania i wyjaśnieniem odpowiedzi na pytanie testowe SCJP 1.6. Oto problem:Var-arg tablic obiektów vs. tablica obiektów - próba zrozumienia pytania testowego SCJP
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"; }
}
Jaki jest wynik? Odpowiedź brzmi -434, ale to, co mnie rzuca, to wyjaśnienie książki. To znacznie różni się od tego, jak koncepcja została wyjaśniona wcześniej w rozdziale.
„Na ogół obciążonych VAR argumentach Metody dobiera koniec. Należy pamiętać, że tablice są obiektami. Wreszcie, Int mogą być zapakowane do liczby całkowitej i «rozszerzony»do obiektu.”
Dzieląc to, czy ktoś może dokładniej zdefiniować to wyjaśnienie?
- Generalnie, przeciążone metody var-args są wybierane jako ostatnie.
- Tablice są obiektami (faktycznie to rozumiem, ale dlaczego jest to istotne dla tego pytania).
- Int może być zapakowany do liczby całkowitej, a następnie "poszerzony" do obiektu.
Dzięki!
Dzięki za wspaniałe wyjaśnienie! –
@ hal100001, zawsze chętnie pomożemy - gdy wszystkie odpowiedzi będą już dostępne, pamiętaj, aby wybrać najlepszą/najbardziej pomocną dla akceptacji (jak mówisz, funkcja msaeed jest również bardzo przydatna - mówimy zasadniczo o tych samych rzeczach , ale moja ekspresja jest bardziej potoczna, jego, bardziej uporządkowana). –