Sobes.tech
Middle

Mis on Generics ja milleks neid kasutatakse?

sobes.tech AI

Vastus AI-lt

Generics (üldised tüübid) — see on mehhanism programmeerimiskeeltes, mis võimaldab luua klasse, liideseid ja meetodeid, mis töötavad erinevat tüüpi andmetega, teadmata eelnevalt konkreetset andmetüüpi.

Kasutatakse:

  1. Tüüpide turvalisuse parandamiseks (Type Safety): Kogumismootor kontrollib andmetüüpe kompileerimise ajal, vältides vigu, mis võivad ilmneda ainult käitamise ajal (Runtime Errors).

    // Näide ilma genericsita — potentsiaalne viga andmete väljavõtmisel
    List list = new ArrayList();
    list.add("string");
    list.add(123); // võib lisada mis tahes tüüpi
    String s = (String) list.get(1); // viga ClassCastException käitamise ajal
    
  2. Koodi korduvkasutus (Code Reusability): Sama kood võib töötada erinevate andmetüüpidega, ilma et peaks kirjutama eraldi versioone iga tüübi jaoks.

    // Genericsiga — turvaline kasutus
    List<String> list = new ArrayList<>(); // määratud tüüp String
    list.add("string");
    // list.add(123); // kompilaator näitab viga — ei saa lisada int
    String s = list.get(0); // ei ole vaja tüüpi teisendada
    
  3. Koodi loetavuse parandamine: Tüüpide selge määratlus aitab mõista, milliste andmetega kood töötab.

  4. Tõhususe optimeerimine: Mõnedes keeltes (näiteks C#) võivad generics pakkuda paremat jõudlust võrreldes baasliikidega (näiteks Object), kuna ei ole vaja pakkida/ava pakkida (boxing/unboxing).

Näiteks standardkogu (loendid, kogud, kaardid) kasutavad enamikus keeltes genericsit, pakkudes turvalisust ja mugavust.

Ilma genericsita Genericsiga
Töötleb Object tüüpi Töötleb konkreetsete tüüpidega
Nõuab tüübi selget teisendamist Ei nõua teisendamist
Tüübivead avastatakse käitamise ajal Tüübivead avastatakse kompileerimise ajal
Vähem loetav kood Rohkem loetav kood