Ich habe Probleme zu verstehen, diese Frage und die Erklärung der Antwort für eine SCJP 1.6 Selbsttest Frage. Hier ist das Problem:Var-arg von Objekt-Arrays vs. Objekt-Array - versuchen, eine SCJP-Selbsttest-Frage zu verstehen
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"; }
}
Was ist das Ergebnis? Die Antwort ist -434, aber was mich dazu bringt, ist die Erklärung des Buches. Es ist sehr verschieden davon, wie das Konzept früher in diesem Kapitel erläutert wurde.
„Im Allgemeinen überlastet var-args Methoden zuletzt ausgewählt werden. Beachten Sie, dass Arrays Objekte sind. Schließlich kann ein int auf eine ganze Zahl und dann verpackt werden,‚verbreiterten‘auf einen Gegenstand.“
Teilen Sie das auf, kann jemand bitte diese Erklärung weiter definieren?
- Im Allgemeinen werden überladene var-args-Methoden zuletzt gewählt.
- Arrays sind Objekte (ich bekomme das eigentlich, aber warum ist das relevant für diese Frage).
- Ein int kann in eine Ganzzahl eingerahmt und dann zu einem Objekt "erweitert" werden.
Vielen Dank!
Danke für die tolle Erklärung! –
@ hal100001, immer glücklich zu helfen - sobald alle Antworten sind, denken Sie daran, wählen Sie die beste/am meisten-hilfreiche für die Annahme (wie Sie sagen, Msaeed ist auch sehr nützlich - wir sagen im Wesentlichen die gleichen Dinge natürlich , aber mein Ausdruck ist umgangssprachlicher, sein, strukturierter). –