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:
-
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 -
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 -
Kodning o'qilishi yaxshilanadi: Ma'lumot turlarini aniq ko'rsatish kod bilan qanday ma'lumotlar ishlayotganini tushunishga yordam beradi.
-
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 |