Sobes.tech
Junior

Koje mogućnosti pružaju Generics?

sobes.tech АИ

Одговор од АИ

Generici (opšti tipovi) pružaju sledeće mogućnosti:

  • Povećana sigurnost tipova (Type Safety): Omogućavaju otkrivanje grešaka tipova tokom faze kompilacije, a ne tokom izvršavanja.
  • Uklanjanje konverzija tipova (Type Casting): Izbegavaju potrebu za eksplicitnim konverzijama tipova pri radu sa kolekcijama i drugim strukturama podataka.
  • Veća ponovna upotrebljivost koda: Omogućavaju kreiranje opštih klasa, interfejsa i metoda koji rade sa različitim tipovima podataka bez dupliranja logike.
  • Poboljšanje performansi: Iako se u Javi generici implementiraju putem brisanja tipova (Type Erasure), što ne uvek daje direktno poboljšanje performansi u poređenju sa korišćenjem Object i konverzijama, u nekim jezicima (kao što je C#) oni mogu obezbediti bolju performansu izbegavanjem boxing/unboxing operacija pri radu sa primitivnim tipovima.
  • Čitljiviji i održiviji kod: Jasno ukazuju na tipove podataka sa kojima kod radi, čineći ga razumljivijim.

Primer upotrebe u Javi:

// Bez generika
/*
List list = new ArrayList();
list.add("string");
Integer i = (Integer) list.get(0); // Greška u izvršenju (ClassCastException)
*/

// Sa genericima
List<String> stringList = new ArrayList<>();
stringList.add("string");
// Integer i = stringList.get(0); // Greška pri kompilaciji

Primer u C#:

// Bez generika
/*
ArrayList list = new ArrayList();
list.Add("string");
int i = (int)list[0]; // Greška u izvršenju (InvalidCastException)
*/

// Sa genericima
List<string> stringList = new List<string>();
stringList.Add("string");
// int i = stringList[0]; // Greška pri kompilaciji