Ho difficoltà a comprendere questa domanda e la spiegazione della risposta per una domanda di autodiagnostica SCJP 1.6. Ecco il problema:Var-arg di matrici di oggetti e array di oggetti - tentativo di comprendere una domanda di autodiagnosi 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"; }
}
Qual è il risultato? La risposta è -434, ma ciò che mi sconcerta è la spiegazione del libro. È molto diverso da come il concetto è stato spiegato in precedenza nel capitolo.
"In generale, var-args sovraccarichi metodi sono scelti ultimo. Si ricordi che array sono oggetti. Infine, un int può essere inscatolato in un intero e poi 'allargato' per un oggetto."
Suddivisione, qualcuno può per favore definire ulteriormente tale spiegazione?
- In generale, i metodi var-args sovraccarichi vengono scelti per ultimi.
- Gli array sono oggetti (in realtà lo capisco, ma perché questo è rilevante per questa domanda).
- Un int può essere inserito in un intero e quindi "allargato" a un oggetto.
Grazie!
Grazie per l'ottima spiegazione! –
@ hal100001, sempre felice di aiutare - una volta che tutte le risposte sono in, ricordati di selezionare il migliore/più utile per l'accettazione (come dici tu, anche l'msaeed è molto utile - stiamo dicendo essenzialmente le stesse cose ovviamente , ma la mia espressione è più colloquiale, la sua, più strutturata). –