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:
-
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 -
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 -
Koodi loetavuse parandamine: Tüüpide selge määratlus aitab mõista, milliste andmetega kood töötab.
-
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 |