Sobes.tech
Junior

Generics qanday imkoniyatlarni taqdim etadi?

sobes.tech AI

AIdan javob

Generyklar (oboblar) quyidagi imkoniyatlarni taqdim etadi:

  • Turlar xavfsizligini oshirish (Type Safety): Turlar xatolarini bajarilishdan oldin, kompilatsiya bosqichida aniqlash imkonini beradi.
  • Turlarni o‘tkazishni (Type Casting) olib tashlash: Koleksiyalar va boshqa ma'lumotlar tuzilmalar bilan ishlashda aniq turlarni o‘tkazishga ehtiyoj qolmaydi.
  • Kodning qayta ishlatilishini oshirish: Turli ma'lumot turlari bilan ishlaydigan umumiy sinflar, interfeyslar va metodlarni yaratishga imkon beradi, bu esa mantiqni takrorlashdan qochadi.
  • Ishlash tezligini oshirish: Java'da generiklar turlarni yo‘q qilish (Type Erasure) orqali amalga oshiriladi, bu esa Object va turlarni o‘tkazish bilan solishtirganda har doim ham to‘g‘ridan-to‘g‘ri ishlashni yaxshilamaydi, ammo ba'zi tillarda (masalan, C#) ular boxing/unboxing (paketlash/ochish) qilishdan qochib, yaxshiroq ishlashni ta'minlaydi.
  • Kodning o‘qilishi va qo‘llab-quvvatlanishini yaxshilash: Kod bilan ishlayotgan ma'lumot turlarini aniq ko‘rsatadi, bu uni tushunarli qiladi.

Java'da foydalanish misoli:

// Generiksiz
/*
List list = new ArrayList();
list.add("matn");
Integer i = (Integer) list.get(0); // Ishga tushirishda xato (ClassCastException)
*/

// Generiklar bilan
List<String> stringList = new ArrayList<>();
stringList.add("matn");
// Integer i = stringList.get(0); // Kompilatsiya xatosi

C# misoli:

// Generiksiz
/*
ArrayList list = new ArrayList();
list.Add("matn");
int i = (int)list[0]; // Ishga tushirishda xato (InvalidCastException)
*/

// Generiklar bilan
List<string> stringList = new List<string>();
stringList.Add("matn");
// int i = stringList[0]; // Kompilatsiya xatosi