Sobes.tech
Middle

Mis on üldtüübid (Generics)?

sobes.tech AI

Vastus AI-lt

Üldised tüübid (Generics) on vahend tüübi parameetriteks, mis võimaldab luua universaalseid klasse, liideseid ja meetodeid. Need võimaldavad töötada erinevate andmetüüpidega ilma tüübi turvalisust kaotamata.

Peamised eelised generics'i kasutamisel:

  • Tüübi turvalisus: Kogumismootor kontrollib tüübi vastavust kompileerimise ajal, aidates tuvastada potentsiaalseid vigu enne programmi käivitamist.
  • Koodi dubleerimise vähendamine: Võite luua ühe klassi või meetodi, mis töötab erinevate tüüpidega, selle asemel, et kirjutada eraldi kood iga tüübi jaoks.
  • Koodi parema loetavuse saavutamine: Üldised tüübid muudavad koodi selgemaks, näidates, milliste andmetüüpidega see töötab.
  • Vajaduse puudumine selgete tüübikastide (casting) kasutamiseks: Töödel üldiste kogumistega ei ole vaja elemente selgelt teisendada soovitud tüüpi, kui neid välja võetakse.

Näide Java keeles:

// Nimekiri, mis võib hoida ainult stringe
List<String> stringList = new ArrayList<>();
stringList.add("hello");
// stringList.add(123); // Kompileerimisviga, kuna 123 ei ole string

// Elementi saamine ilma tüübi teisendamiseta
String firstElement = stringList.get(0);

Näide C# keeles:

// Nimekiri, mis võib hoida ainult täisarve
List<int> intList = new List<int>();
intList.Add(10);
// intList.Add("world"); // Kompileerimisviga, kuna "world" ei ole täisarv

// Elementi saamine ilma tüübi teisendamiseta
int number = intList[0];

Näide üldisest klassist:

// Üldine klass Box, mis võib hoida mis tahes tüüpi objekti T
public class Box<T> {
    private T item;

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

    public T getItem() {
        return item;
    }
}

// Üldise klassi kasutamine
Box<Integer> intBox = new Box<>();
intBox.setItem(123);
int intValue = intBox.getItem(); // Ei ole vaja teisendust

Box<String> stringBox = new Box<>();
stringBox.setItem("test");
String stringValue = stringBox.getItem(); // Ei ole vaja teisendust

Seega on generics võimas tööriist paindliku, turvalise ja hõlpsasti hooldatava koodi loomiseks.