dorwas2 ha scritto:
volevo saperne di piu sui generics utilizzati con le Collection...
L'uso basilare dei
generics con le collezioni è abbastanza semplice. Da Java 5
tutte le collezioni, quindi le interfacce e le classi di implementazione più altri tipi correlati (Iterator, ListIterator, Enumeration ecc..), sono diventati tipi "generici".
Pertanto es. ArrayList è diventato ArrayList
<T> e significa che può essere utilizzato "parametrizzato", cioè specificando un tipo concreto come parametro di tipo.
Prima di Java 5:
List listaDiStringhe = new ArrayList();
listaDiStringhe.add("abc");
String s = (String) listaDiStringhe.get(0); // cast necessario
Da Java 5:
List<String> listaDiStringhe = new ArrayList<String>();
listaDiStringhe.add("abc");
String s = listaDiStringhe.get(0); // cast NON necessario
Così facendo c'è una maggior
type-safety, perché in questo listaDiStringhe puoi solo inserire oggetti String e non "altro" come invece era possibile (e purtroppo non si poteva impedire) prima di Java 5.
E quando estrai un oggetto, il compilatore inserisce un cast "nascosto" in modo da poter estrarre l'oggetto vedendolo già del tipo parametrizzato.