Sobes.tech
Middle

Generics hansı imkanları təqdim edir?

sobes.tech Süni İntellekt

AI-dan cavab

Növiyyətlər (ümumi tiplər) aşağıdakı imkanları təqdim edir:

  • Kodun təkrar istifadəsi: Müxtəlif tiplərdə obyektlərlə işləyə bilən siniflər, interfeyslər və metodlar yaratmaq, tiplərin təhlükəsizliyini itirmədən.
  • Kompilyasiya zamanı tiplərin təhlükəsizliyi: Kompilyator tiplərin düzgün istifadəsini yoxlaya bilər və tiplərin çevrilməsi ilə əlaqəli icra zamanı səhvlərin qarşısını ala bilər.
  • Kodun oxunuşunun yaxşılaşdırılması: Metod imzalarında və sinif elanlarında tiplərin açıq göstərilməsi kodu daha anlaşılan edir.
  • Bəzi dillərdə performansın artırılması: Java kimi dillərdə, ümumiləşdirmələr tiplərin silinməsi ilə həyata keçirilir (məsələn, Java), bu da icra zamanı tiplərin çevrilməsinə ehtiyacı aradan qaldırır. C++ şablonları kimi dillərdə, bu, kodun böyüməsinə səbəb ola bilər, lakin potensial olaraq dinamik çağırışların aradan qaldırılması ilə daha sürətli işləməyə səbəb ola bilər.
  • Kolleksiyalar ilə uyğunluq: Kolleksiyalar üzərində işləməyi asanlaşdırır, içərisində saxlanan elementlərin tiplərini göstərməyə imkan verir.

Java nümunəsi:

// Generics olmadan
List list = new ArrayList();
list.add("string");
// Çıxarışda tiplə çevirmə lazım olur, ClassCastException ehtimalı var
String s = (String) list.get(0);

// Generics ilə
List<String> stringList = new ArrayList<>();
stringList.add("string");
// Tiplə çevirməyə ehtiyac yoxdur, tiplərin təhlükəsizliyi təmin edilir
String s2 = stringList.get(0);
// Uyğunsuz tipləri əlavə etməyə cəhd, tənqid xətası
// stringList.add(123);

C# nümunəsi:

// Generics olmadan
ArrayList list = new ArrayList();
list.Add("string");
// Çıxarışda tiplə çevirmə lazım olur
string s = (string) list[0];

// Generics ilə
List<string> stringList = new List<string>();
stringList.Add("string");
// Tiplə çevirməyə ehtiyac yoxdur
string s2 = stringList[0];
// Tənqid xətası
// stringList.Add(123);