Sobes.tech
Middle

Generics nima va ular nima uchun ishlatiladi?

sobes.tech AI

AIdan javob

Generiklar (generics) dasturlash tillarida ma'lum bir ma'lumot turini oldindan bilmasdan, turli ma'lumot turlari bilan ishlaydigan sinflar, interfeyslar va metodlarni yaratishga imkon beradigan mexanizmdir.

Ular quyidagi maqsadlar uchun ishlatiladi:

  1. Turlar xavfsizligini oshirish (Type Safety): Kompilyator ma'lumot turlarini kompilyatsiya vaqtida tekshiradi va faqat ishga tushirish vaqtida (Runtime Errors) yuzaga keladigan xatolarni oldini oladi.

    // Generiksiz misol - ehtimoliy xato
    List list = new ArrayList();
    list.add("string");
    list.add(123); // Har qanday tur qo'shish mumkin
    String s = (String) list.get(1); // Ishga tushirish vaqtida ClassCastException xatosi
    
  2. Kodning qayta ishlatilishi (Code Reusability): Bir xil kod turli ma'lumot turlari bilan ishlashi mumkin, har bir tur uchun alohida versiyalar yozmasdan.

    // Generiklar bilan - xavfsiz foydalanish
    List<String> list = new ArrayList<>(); // String turini belgilash
    list.add("string");
    // list.add(123); // Kompilyator xato beradi - int qo'shish mumkin emas
    String s = list.get(0); // Turlarni konvertatsiya qilish shart emas
    
  3. Kodning o'qilishi yaxshilanadi: Ma'lumot turlarini aniq ko'rsatish kod bilan qanday ma'lumotlar ishlayotganini tushunishga yordam beradi.

  4. Performansni optimallashtirish: Ba'zi tillarda (masalan, C#), generiklar bazaviy turlar bilan solishtirganda yaxshiroq ishlashni ta'minlashi mumkin, chunki boxing/unboxing talab qilinmaydi.

Masalan, ko'p tillarda standart ma'lumot to'plamlari (ro'yxatlar, to'plamlar, xaritalar) generiklardan foydalanadi, bu xavfsizlik va qulaylikni ta'minlaydi.

Generiksiz Generiklar bilan
Object turlari bilan ishlaydi Aniq turlar bilan ishlaydi
Turlarni aniq konvertatsiya qilish talab qilinadi Turlarni konvertatsiya qilish shart emas
Turlar xatolari ish vaqtida aniqlanadi Turlar xatolari kompilyatsiya vaqtida aniqlanadi
Kode kamroq o'qilishi mumkin Kode ko'proq o'qilishi mumkin