Sobes.tech
Middle

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:

  1. 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
    
  2. 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
    
  3. Kodo skaitomumo gerinimas: Aiškus duomenų tipų nurodymas padeda suprasti, su kokiais duomenimis dirba kodas.

  4. 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