Sobes.tech
Middle

Genel Tipler (Generics) nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Genel Tipler (Generics), sınıflar, arayüzler ve metodları tip parametreleri kullanarak tanımlamaya olanak tanır. Bu, kodun esnekliğini, yeniden kullanılabilirliğini ve tip güvenliğini artırır, farklı veri tipleriyle çalışmaya izin verirken statik tip kontrolünü kaybetmez.

Ana avantajlar:

  • Tip Güvenliği: Derleyici, tipleri derleme aşamasında kontrol eder ve uyumsuz tiplerle ilgili çalışma zamanı hatalarını önler.
  • Yeniden Kullanılabilirlik: Aynı kod, farklı veri tipleriyle kullanılabilir, böylece kod tekrarı azalır.
  • Performans: Bazı dillerde (örneğin, C#), genel tipler belirli bir tipe göre uygulanır, bu da Object kullanımına kıyasla performansı artırabilir.

Kullanım örnekleri:

  • Koleksiyonlar: Eleman tipiyle parametrize edilmiş listeler, sözlükler, kümeler.
  • Metodlar: Belirli bir arayüzü uygulayan herhangi bir veri tipiyle çalışan metodlar.
  • Sınıflar: Sınıf sarmalayıcılar, fabrikalar, tip parametreleriyle çalışanlar.

C# örneği:

// Genel liste
List<string> isimler = new List<string>();
isimler.Add("Alice");
isimler.Add("Bob");

// Genel metod
public T IlkElemaniGetir<T>(List<T> liste)
{
    if (liste != null && liste.Count > 0)
    {
        return liste[0];
    }
    return default(T); // T tipi için varsayılan değeri döner
}

Java örneği:

// Genel liste
List<String> isimler = new ArrayList<>();
isimler.add("Alice");
isimler.add("Bob");

// Genel metod
public <T> T ilkElemaniGetir(List<T> liste) {
    if (liste != null && !liste.isEmpty()) {
        return liste.get(0);
    }
    return null; // Referans tipleri için null döner
}

Python örneği (tip ipucuyla):

from typing import List, TypeVar

T = TypeVar('T')

def ilkElemaniGetir(veriler: List[T]) -> T | None:
    # Herhangi bir listeyle çalışabilir ve bir eleman dönebilir
    if veriler:
        return veriler[0]
    return None

isimler: List[str] = ["Alice", "Bob"]
ilk_isim = ilkElemaniGetir(isimler) # IDE, ilk_ismin str olduğunu anlar

Bazı dillerde (Java), genel tipler "tip silme" (type erasure) kullanır, burada parametre tipi bilgisi derleme sırasında kaldırılır. Bu, bazı kısıtlamalara yol açabilir. Diğer dillerde (C#, Go), tip bilgisi çalışma zamanında korunur.

Genel tipler, temiz, güvenli ve yeniden kullanılabilir kod yazmak için temel bir araçtır.