"Un altro argomento interessante."
"Le sorprese continuano ad arrivare! È il mio compleanno?"
"Oggi ti parlerò dei generici. I generici sono tipi che hanno un parametro. In Java, le classi contenitore ti permettono di indicare il tipo dei loro oggetti interni."
"Quando dichiariamo una variabile generica, indichiamo due tipi invece di uno: il tipo di variabile e il tipo di dati che memorizza."
"ArrayList è un buon esempio. Quando creiamo un nuovo oggetto ArrayList, è conveniente indicare il tipo di valori che verranno memorizzati all'interno di questo elenco."
Codice | Spiegazione |
---|---|
|
Crea una variabile ArrayList chiamata list . Assegnagli un oggetto ArrayList. Questo elenco può memorizzare solo oggetti String . |
|
Crea una variabile ArrayList chiamata list . Assegnagli un oggetto ArrayList. Questo elenco può memorizzare qualsiasi valore . |
|
Crea una variabile ArrayList chiamata list . Assegnagli un oggetto ArrayList. Questo elenco può solo memorizzare Integer e int valori. |
"Sembra molto interessante. Specialmente la parte sulla memorizzazione di valori di qualsiasi tipo ."
"Sembra solo che sia una buona cosa. In realtà, se inseriamo stringhe in un ArrayList in un metodo e poi ci aspettiamo che contenga numeri in un altro metodo, il programma andrà in crash (terminerà con un errore)."
"Vedo."
"Per ora, non creeremo le nostre classi con parametri di tipo. Useremo solo quelli esistenti."
"Qualsiasi classe può essere un parametro di tipo, anche quella che scrivo?"
"Sì. Qualsiasi tipo tranne i tipi primitivi. Tutti i parametri di tipo devono ereditare dalla classe Object."
" Vuoi dire che non posso scrivere ArrayList<int>? "
"In effetti, non puoi. Ma gli sviluppatori Java hanno scritto classi wrapper per ciascuno dei tipi primitivi. Queste classi ereditano Object . Ecco come appare:"
Tipo primitivo | Classe | Elenco |
---|---|---|
int | Numero intero | ArrayList< Numero intero > |
Doppio | Doppio | ArrayList< Doppio > |
booleano | Booleano | ArrayList< booleano > |
char | Carattere | ArrayList <Carattere> _ |
byte | Byte | ArrayList< Byte > |
"Puoi facilmente assegnare le classi primitive e i loro analoghi (classi wrapper) l'una all'altra:"
Esempi |
---|
|
|
|
|
|
"Fantastico. Penso che proverò a usare ArrayList più spesso."