Sobes.tech
Junior

Jenerikler nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Programlamada jenerikler, farklı veri türleriyle çalışabilen, ancak tip güvenliğini kaybetmeyen yeniden kullanılabilir bileşenler oluşturmanın bir yoludur. Sınıflar, arayüzler ve metodlar, tip parametreleriyle çalışacak şekilde yazılabilir.

Ana avantajlar:

  • Derleme zamanında tip güvenliği: Tür uyuşmazlığıyla ilgili hatalar, program çalıştırılmadan önce tespit edilir.
  • Kod tekrarını azaltma: Farklı türlerle çalışan evrensel bir algoritma veya veri yapısı yazılabilir.
  • Performans: Object gibi genel türlerin kullanımının aksine, tip dönüşümüne (cast) gerek kalmaz, bu da performansı artırabilir.

Java örneği:

// Jeneriksiz List sınıfı (eski yöntem)
List list = new ArrayList();
list.add("merhaba");
list.add(123); // Herhangi bir tür eklenebilir
String s = (String) list.get(0); // Manuel tip dönüşümü gerekir
Integer i = (Integer) list.get(1); // Manuel tip dönüşümü gerekir

// Jenerikli List sınıfı
List<String> stringList = new ArrayList<>();
stringList.add("dünya");
// stringList.add(123); // Derleme hatası! Sadece dizgeler izinlidir

String s2 = stringList.get(0); // Tip dönüşümüne gerek yok

Jenerikler, koleksiyon veya diğer genel sınıf/arayüz ile çalışacak veri türünü belirtmenize olanak tanır. Bu, türlerin katı olmasını sağlar ve çalışma zamanında hataları önler.

C# örneği:

// Jeneriklerle string listesi
List<string> isimler = new List<string>();
isimler.Add("Ali");
// isimler.Add(123); // Derleme hatası

string ilkİsim = isimler[0]; // Tip dönüşümüne gerek yok

Python'da jenerik kavramı, tip ipuçları (type hints) ve typing modülü kullanılarak uygulanır:

from typing import List, Dict, Any

# Tip ipucuyla string listesi
def stringleriİşle(datalar: List[str]):
    for item in datalar:
        print(item)

# Anahtarları string, değerleri herhangi bir tip olan sözlük
def sözlüğüİşle(datalar: Dict[str, Any]):
    for anahtar, değer in datalar.items():
        print(f"{anahtar}: {değer}")

Python'da tip ipuçları çalışma zamanında güvenlik sağlamaz (bu, MyPy gibi statik analiz araçlarının görevidir), ancak kodun okunabilirliğini artırır ve hata ayıklamayı kolaylaştırır.

Genel olarak, jenerikler, çeşitli programlama dillerinde esnek, yeniden kullanılabilir ve tip güvenli kodlar oluşturmak için güçlü bir araçtır.