Sobes.tech
Middle

Ի՞նչ են ընդհանուր տիպերը (Generics):

sobes.tech AI

Պատասխան AI-ից

Համընդհանուր տիպերը (Generics) գործիք են տիպերի պարամետրավորման համար, որը թույլ է տալիս ստեղծել համընդհանուր դասեր, ինտերֆեյսներ և մեթոդներ: Դրանք թույլ են տալիս աշխատել տարբեր տվյալների տիպերով առանց տիպային անվտանգության կորուստի ժամանակակից կոդում:

Հիմնական առավելությունները՝

  • Տիպային անվտանգություն: Կոմպիլյատորը ստուգում է տիպերի համապատասխանությունը կոմպիլյացիայի փուլում, ինչը օգնում է հայտնաբերել հնարավոր սխալները նախքան ծրագրի գործարկումը:
  • Կոդի կրկնօրինակի նվազեցում: Կարող եք ստեղծել մեկ դաս կամ մեթոդ, որը աշխատում է տարբեր տիպերով, փոխարենը գրել առանձին կոդ յուրաքանչյուր տիպի համար:
  • Կոդի ընթեռնելիության բարձրացում: Համընդհանուր տիպերի օգտագործումը դարձնում է կոդը ավելի հստակ, ցույց տալով, թե ինչ տիպերի տվյալներով է աշխատում:
  • Անհրաժեշտության վերացում հստակ տիպի փոխարկումների (casting) համար: Համընդհանուր հավաքածուների հետ աշխատելիս, անհրաժեշտ չէ հստակ փոխարկել տարրերը անհրաժեշտ տիպին՝ դրանց հանելու ժամանակ:

Օրինակ՝ Java-ում:

// Ստեղծում է ցանկ, որը կարող է պահել միայն տողեր
List<String> stringList = new ArrayList<>();
stringList.add("hello");
// stringList.add(123); // Կոմպիլյացիայի սխալ, քանի որ 123-ը տող չէ

// Տարրին հասանելիություն առանց տիպի փոխարկման
String firstElement = stringList.get(0);

C#-ում՝

// Ստեղծում է ցանկ, որը կարող է պահել միայն ամբողջ թվեր
List<int> intList = new List<int>();
intList.Add(10);
// intList.Add("world"); // Կոմպիլյացիայի սխալ, քանի որ "world"-ը ամբողջ թիվ չէ

// Տարրին հասանելիություն առանց տիպի փոխարկման
int number = intList[0];

Համընդհանուր դասի օրինակ՝

// Համընդհանուր դաս Box, որը կարող է պահել ցանկացած տիպի օբյեկտ
public class Box<T> {
    private T item;

    public void setItem(T item) {
        this.item = item;
    }

    public T getItem() {
        return item;
    }
}

// Համընդհանուր դասի օգտագործում
Box<Integer> intBox = new Box<>();
intBox.setItem(123);
int intValue = intBox.getItem(); // Անհրաժեշտ չէ փոխարկում

Box<String> stringBox = new Box<>();
stringBox.setItem("test");
String stringValue = stringBox.getItem(); // Անհրաժեշտ չէ փոխարկում

Համընդհանուր տիպերը հզոր գործիք են՝ ստեղծելու ճկուն, անվտանգ և հեշտ պահպանվող կոդ։