Sobes.tech
Middle

Generics nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Generics (Genel Türler) — farklı türlerdeki verilerle çalışan sınıflar, arayüzler ve metodlar yazmaya olanak tanıyan, ancak derleme sırasında tür güvenliğini sağlayan bir mekanizmadır. Yeniden kullanılabilir bileşenler oluşturmaya izin verirler ve herhangi bir veri türüyle çalışabilirler, tür bilgisi kaybolmaz, bu da çalışma zamanında tür dönüşüm hatalarını en aza indirir.

Ana avantajlar:

  • Tür güvenliği: Derleyici, genel yapılar içindeki tür kullanımının doğruluğunu denetler.
  • Kod miktarını azaltma: Tek bir genel sınıf veya metod, birçok türle çalışabilir.
  • Kod okunabilirliği: Bileşenin hangi türlerle çalıştığı açıkça görülür.
  • Performans artışı (bazı durumlarda): Çalışma zamanında tür dönüşümüne gerek olmaması, performansı biraz artırabilir.

Örnek (Java):

// Genel bir sınıf örneği
class Box<T> {
    private T content;

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

    public T getContent() {
        return content;
    }
}

// Farklı türlerle genel sınıf kullanımı
Box<Integer> integerBox = new Box<>();
integerBox.setContent(10);
int value = integerBox.getContent(); // Tür güvenliği, dönüşüme gerek yok

Box<String> stringBox = new Box<>();
stringBox.setContent("Hello");
String text = stringBox.getContent(); // Tür güvenliği, dönüşüme gerek yok

Örnek (Python - Type Hinting, Generics'e yakın):

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

# Type hinting ile kullanım
integer_box: Box[int] = Box()
integer_box.set_content(10)
value: int | None = integer_box.get_content() # Statik analiz araçlarına yardımcı olur

string_box: Box[str] = Box()
string_box.set_content("Hello")
text: str | None = string_box.get_content() # Statik analiz araçlarına yardımcı olur