Sobes.tech
Middle

Generics деген эмне жана алар эмне үчүн колдонулат?

sobes.tech AI

AIден жооп

Женериктер (жалпы түрлөр) — бул программалоо тилдериндеги механизм, ал ар кандай түрдөгү маалыматтар менен иштей турган класстарды, интерфейстерди жана методдорду түзүүгө мүмкүндүк берет, алдын ала конкреттүү маалымат түрүн билбестен.

Колдонулат:

  1. Тирүүчүлүк коопсуздугун жогорулатуу (Type Safety): Компилятор маалымат түрлөрүн компиляция учурунда текшерет, ишке ашырылуу учурунда гана пайда боло турган каталарды алдын алат.

    // Generics жок мисал — чыгарып алуу учурунда потенциалдуу каталар
    List list = new ArrayList();
    list.add("string");
    list.add(123); // Ар кандай түрдү кошсо болот
    String s = (String) list.get(1); // Ишке ашырылуу учурунда ClassCastException катасы
    
  2. Кодду кайра колдонуу (Code Reusability): Бир эле код ар кандай маалымат түрлөрү менен иштей алат, ар бир түр үчүн өзүнчө версия жазуунун кажети жок.

    // Generics менен — коопсуз колдонуу
    List<String> list = new ArrayList<>(); // Түрү String деп белгиленген
    list.add("string");
    // list.add(123); // Компилятор катаны көрсөтөт — int кошууга болбойт
    String s = list.get(0); // Түрүн кайра түрлөндүрүүгө муктаждык жок
    
  3. Коддун окумдуулугун жакшыртуу: Тирүүчүлүк түрлөрүн так көрсөтүү код менен иштеген маалыматтарды түшүнүүгө жардам берет.

  4. Өндүрүмдүүлүктү оптималдаштыруу: Кээ бир тилдерде (мисалы, C#) Generics жакшыраак иштөө мүмкүнчүлүгүн камсыздайт, базалык түрлөрдү колдонгондон айырмаланып (мисалы, Object), анткени упаковка/ачыктоо (boxing/unboxing) талап кылынбайт.

Мисалы, стандарттык коллекциялар (тизмелер, жыйнактар, карталар) көпчүлүк тилдерде Generics колдонуп, элементтер менен иштейт, коопсуздук жана ыңгайлуулук камсыз кылат.

Без Generics С Generics
Object түрү менен иштейт Конкреттүү түрлөр менен иштейт
Тиркемелерди так көрсөтүү талап кылынат Тиркемелерди көрсөтүү талап кылынбайт
Түр каталары ишке ашырылуу учурунда аныкталат Түр каталары компиляция учурунда аныкталат
Аз окулуштуу код Көбүрөөк окулуштуу код