Sobes.tech
Middle

Šta su Generics i zašto se koriste?

sobes.tech АИ

Одговор од АИ

Generici (generics) su mehanizam u programskim jezicima koji omogućava kreiranje klasa, interfejsa i metoda koji rade sa podacima različitih tipova, bez prethodnog poznavanja konkretnog tipa.

Koriste se za:

  1. Povećanje sigurnosti tipova (Type Safety): Kompajler proverava tipove podataka tokom kompajliranja, sprečavajući greške koje bi se mogle pojaviti samo tokom izvršenja (Runtime Errors).

    // Primer bez generika - potencijalna greška pri izvlačenju
    List list = new ArrayList();
    list.add("string");
    list.add(123); // Može dodati bilo koji tip
    String s = (String) list.get(1); // Greška ClassCastException tokom izvršenja
    
  2. Ponovna upotreba koda (Code Reusability): Isti kod može raditi sa različitim tipovima podataka bez potrebe za pisanjem zasebnih verzija za svaki tip.

    // Primer sa genericima - sigurna upotreba
    List<String> list = new ArrayList<>(); // Specificiran tip String
    list.add("string");
    // list.add(123); // Kompajler će dati grešku - ne može se dodati int
    String s = list.get(0); // Nije potrebna konverzija tipa
    
  3. Poboljšanja u čitljivosti koda: Eksplicitno navođenje tipova podataka pomaže da se razume sa kojim podacima kod radi.

  4. Optimizacije performansi: U nekim jezicima (npr. C#), generici mogu obezbediti bolju performansu u poređenju sa korišćenjem osnovnih tipova (npr. Object), jer nije potrebna kutija/odkutija (boxing/unboxing).

Na primer, standardne kolekcije podataka (liste, skupovi, mape) u većini jezika koriste generike za rad sa elementima bilo kog tipa, obezbeđujući sigurnost i udobnost.

Bez generika Sa genericima
Radi sa tipovima Object Radi sa specifičnim tipovima
Zahteva eksplicitnu konverziju tipova Ne zahteva konverziju tipova
Greške tipova se otkrivaju u Runtime Greške tipova se otkrivaju u fazi kompilacije
Manje čitljiv kod Čitljiviji kod