Kas yra Generics ir kam jie naudojami?
sobes.tech AI
Atsakymas iš AI
Generics (bendrasis tipas) — tai mechanizmas programavimo kalbose, leidžiantis kurti klases, sąsajas ir metodus, dirbančius su įvairių tipų duomenimis, nežinant iš anksto konkretaus duomenų tipo.
Naudojama:
-
Tipų saugumo didinimui (Type Safety): Kompiliatorius tikrina duomenų tipus kompiliacijos metu, užkertant kelią klaidoms, kurios gali pasireikšti tik vykdymo metu (Runtime Errors).
// Pavyzdys be Generics - potenciali klaida duomenų išgavime List list = new ArrayList(); list.add("string"); list.add(123); // gali pridėti bet kurį tipą String s = (String) list.get(1); // klaida ClassCastException vykdymo metu -
Kodo pakartotinio naudojimo galimybė (Code Reusability): Tas pats kodas gali dirbti su skirtingais duomenų tipais be būtinybės rašyti atskiras versijas kiekvienam tipui.
// Su Generics - saugus naudojimas List<String> list = new ArrayList<>(); // nurodytas tipas String list.add("string"); // list.add(123); // kompiliatorius išmes klaidą - negalima pridėti int String s = list.get(0); // nereikia tipo konvertavimo -
Kodo skaitomumo gerinimas: Aiškus duomenų tipų nurodymas padeda suprasti, su kokiais duomenimis dirba kodas.
-
Našumo optimizavimas: Kai kuriose kalbose (pvz., C#) Generics gali užtikrinti geresnį našumą, palyginti su bazinių tipų (pvz.,
Object) naudojimu, nes nereikia įpakuoti/pašalinti (boxing/unboxing).
Pavyzdžiui, standartinės duomenų kolekcijos (sąrašai, rinkiniai, žemėlapiai) daugelyje kalbų naudoja Generics, užtikrindamos saugumą ir patogumą.
| Be Generics | Su Generics |
|---|---|
Dirba su Object tipu |
Dirba su konkrečiais tipais |
| Reikalauja aiškaus tipų konvertavimo | Nereikia konvertuoti tipų |
| Tipų klaidos nustatomos vykdymo metu | Tipų klaidos nustatomos kompiliacijos metu |
| Mažiau skaitomas kodas | Daugiau skaitomas kodas |