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);