Middle
Mis on Generics ja kuidas neid programmeerimises kasutatakse?
sobes.tech AI
Vastus AI-lt
Generics (üldised) — see on võimalus kirjutada koodi, mis saab töötada erinevate andmetüüpidega, säilitades tüübi turvalisuse kompileerimise ajal. Need võimaldavad luua klasse, liideseid ja meetodeid, kus andmetüüp määratakse nende kasutamise ajal, mitte nende deklaratsiooni ajal.
Generics kasutamine tagab:
- Tüübiturvalisus: Kompilaator kontrollib tüüpide vastavust, aidates vältida vigu, mis on seotud tüüpide mittevastavusega jooksvalt.
- Koodi korduvkasutus: Sama kood saab töötada erinevate andmetüüpidega ilma loogikat dubleerimata.
- Koodi loetavus: Konkreetsete tüüpide kasutamine
Objectasemel suurendab koodi arusaadavust. - Jõudlus: Mõnedes keeltes (näiteks Java) rakendatakse generikke tüübi kustutamisega (type erasure), teistes (näiteks C#, C++) säilitatakse teave tüüpide kohta jooksvalt.
Näited:
- Kogud: Luua universaalseid nimesid, komplekte, kaarte, mis võivad hoida ükskõik millise tüübi elemente.
// Teksti nimekirja loomine List<String> stringList = new ArrayList<>(); stringList.add("tere"); // Viga kompilatsioonis, kui proovite lisada arvu // stringList.add(123); - Fabrikaadid: Luua fabrike, mis võivad toota erinevat tüüpi objekte.
- Meetodid: Kirjutada meetodeid, mis töötavad üldtüüpidega.
// Üldine vahetusmeetod public static void Swap<T>(ref T a, ref T b) { T temp = a; a = b; b = temp; } - Klassid: Luua klasse, mis on üldised hoitavate või töödeldavate andmetüüpide osas.
// Üldine kastiklass class Box<T> { private T content; public void setContent(T content) { this.content = content; } public T getContent() { return content; } }
Võrdlus Object tüübi kasutamisega (Java):
| Omadus | Generics | Object tüüp |
|---|---|---|
| Tüübiturvalisus | Kompileerimise ajal | Käivitamise ajal (kastimise kaudu) |
| Vajalik kastimine | Ei | Jah |
| Vead | Avastatakse kompileerimise ajal | Võivad tekkida käivitamise ajal (ClassCastException) |
| Loetavus | Kõrge | Madal (pole selge, milliseid tüüpe oodatakse) |
Kokkuvõttes on generics võimas tööriist, mis võimaldab kirjutada usaldusväärsemat, loetavamat ja taaskasutatavat koodi.