"Ciao, Amico!"
"Oggi parlerò di autoboxing . AutoBoxing significa mettere automaticamente qualcosa in una scatola."
"Ricorderai che Java ha tipi che ereditano la classe Object, così come tipi primitivi. Ma si scopre che cose convenienti come raccolte e generici funzionano solo con tipi che ereditano Object."
"Quindi è stata presa la decisione di creare una controparte non primitiva di ogni tipo primitivo".
Tipo primitivo | Controparte non primitiva |
---|---|
byte | Byte |
corto | Corto |
int | Numero intero |
lungo | Lungo |
galleggiante | Galleggiante |
Doppio | Doppio |
booleano | Booleano |
char | Carattere |
vuoto | Vuoto |
"Ma è super scomodo convertire tra questi tipi tutto il tempo:"
int x = 3;
Integer y = new Integer(x + 1);
int z = y.intValue();
"Soprattutto quando si lavora direttamente con le raccolte:"
int[] numbers = new int[10];
ArrayList list = new ArrayList();
for (int i = 0; i < numbers.length; i++)
{
list.add( new Integer(i));
}
"Ecco perché i creatori di Java hanno inventato l'"autoboxing" dei tipi primitivi e l'"unboxing" delle loro controparti non primitive."
"Ecco come funziona:
Quello che vedi | Cosa succede davvero |
---|---|
|
|
|
|
|
|
|
|
"È tutto semplice. Puoi assegnare i tipi int e Integer tra loro e il compilatore si occupa di tutto il resto."
"È molto conveniente."
"Sì. Ma ci sono sfumature di cui parlerò più tardi."
GO TO FULL VERSION