Junior
Quali possibilità offrono i Generics?
sobes.tech AI
Risposta dell'AI
I generici (obbligatori) offrono le seguenti possibilità:
- Maggiore sicurezza dei tipi (Type Safety): Consentono di individuare errori di tipo in fase di compilazione, non a runtime.
- Eliminazione dei cast di tipo (Type Casting): Evitano la necessità di cast espliciti quando si lavora con collezioni e altre strutture dati.
- Maggiore riutilizzo del codice: Permettono di creare classi, interfacce e metodi generici che funzionano con diversi tipi di dati senza duplicare la logica.
- Miglioramento delle prestazioni: Sebbene in Java i generici siano implementati tramite l'eliminazione dei tipi (Type Erasure), il che non sempre porta a un miglioramento diretto delle prestazioni rispetto all'uso di
Objecte cast, in alcuni linguaggi (come C#) possono offrire migliori prestazioni evitando il boxing/unboxing con tipi primitivi. - Codice più leggibile e manutenibile: Indicano chiaramente i tipi di dati con cui il codice lavora, rendendolo più comprensibile.
Esempio di utilizzo in Java:
// Senza generici
/*
List list = new ArrayList();
list.add("stringa");
Integer i = (Integer) list.get(0); // Errore a runtime (ClassCastException)
*/
// Con generici
List<String> stringList = new ArrayList<>();
stringList.add("stringa");
// Integer i = stringList.get(0); // Errore di compilazione
Esempio in C#:
// Senza generici
/*
ArrayList list = new ArrayList();
list.Add("stringa");
int i = (int)list[0]; // Errore a runtime (InvalidCastException)
*/
// Con generici
List<string> stringList = new List<string>();
stringList.Add("stringa");
// int i = stringList[0]; // Errore di compilazione