Sobes.tech
Middle

Mis on genrikud?

sobes.tech AI

Vastus AI-lt

Üldised (Generics) on mehhanism, mis võimaldab kirjutada klasse, liideseid ja meetodeid, mis töötavad erinevat tüüpi andmetega, kuid samal ajal tagavad tüübi turvalisuse kompileerimisel. Need võimaldavad luua taaskasutatavaid komponente, mis võivad töötada mis tahes andmetüübiga, kaotamata teavet tüübi kohta, mis minimeerib vigu tüübi teisendamisel käitamise ajal.

Peamised eelised:

  • Tüübiturvalisus: Kompilaator kontrollib, kas üldistes struktuurides kasutatakse õigeid tüüpe.
  • Koodi mahtu vähendav: Üks üldine klass või meetod võib töötada paljude tüüpidega.
  • Koodi loetavus: On selge, milliste tüüpidega komponent töötab.
  • Tõhususe tõstmine (mõnel juhul): Tüüpide teisendamise vajadus käitamise ajal puudub, mis võib veidi parandada jõudlust.

Näide (Java):

// Üldise klassi näide
class Box<T> {
    private T content;

    public void setContent(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }
}

// Kasutamine erinevate tüüpidega
Box<Integer> integerBox = new Box<>();
integerBox.setContent(10);
int value = integerBox.getContent(); // Tübiturvalisus, ei ole vaja teisendada int-ks

Box<String> stringBox = new Box<>();
stringBox.setContent("Hello");
String text = stringBox.getContent(); // Tübiturvalisus, ei ole vaja teisendada String-ks

Näide (Python - Tüübimärked, lähedane Generics):

from typing import TypeVar, Generic

T = TypeVar('T')

class Box(Generic[T]):
    def __init__(self) -> None:
        self._content: T | None = None

    def set_content(self, content: T) -> None:
        self._content = content

    def get_content(self) -> T | None:
        return self._content

# Kasutamine tüübimärkega
integer_box: Box[int] = Box()
integer_box.set_content(10)
value: int | None = integer_box.get_content() # Aitab staatilise analüüsi tööriistu

string_box: Box[str] = Box()
string_box.set_content("Hello")
text: str | None = string_box.get_content() # Aitab staatilise analüüsi tööriistu