Sintassi per le collezioni non
generiche :
List
myList = new
ArrayList();
myList.add("stringa");
myList.add(2);
String
s1 = (String) myList.get(0);
int s2 = (int) myList.get(0);
La
lista myList non è generica.
Quindi
ci possiamo mettere oggetti di tipi diversi (non type-safe), come una String o
un int. Quando si recuperano gli oggetti siccome il compilatore non sa di che
tipo sono gli oggetti così recuperati vanno castati.
L’ultima
riga evidenzia il problema della collezioni non generiche; infatti il
compilatore permette di scrivere la linea di codice ma questa a run time
provoca una eccezione, infatti stiamo cercando di castare ad intero un elemento
che in realtà è una stringa:
Exception
in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
Sintassi
per le collezioni generiche :
List<String> myList = new ArrayList();
myList.add("stringa");
* myList.add(2);
String
s1 = myList.get(0);
* int s2 = (int) myList.get(0);
In questo caso il
compilatore segnala subito un errore se proviamo ad inserire un elemento intero
dentro la collezione generica. Ancora più importante il compilatore segnala un
errore se si cerca di recuperare un intero da una collezione di Stringhe.
Questo rende il codice più robusto.