Sobes.tech
Middle

Generics nedir ve programlamada nasıl kullanılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Genel (generics), farklı veri türleriyle çalışabilen ve derleme zamanında tür güvenliğini koruyan kod yazma imkanıdır. Sınıflar, arayüzler ve metodlar oluşturmayı sağlarlar ve burada veri tipi, kullanıldıkları zaman belirlenir, tanımlandıkları zaman değil.

Generics kullanımı şunları sağlar:

  • Tür güvenliği: Derleyici, tür uyumluluğunu kontrol eder, bu da çalışma zamanında tür uyuşmazlığı hatalarını önlemeye yardımcı olur.
  • Kod tekrar kullanımı: Aynı kod, farklı veri türleriyle çalışmak için kullanılabilir, böylece mantık tekrarlanmaz.
  • Kod okunabilirliği: Belirli türlerin kullanılması, Object yerine, kodun anlaşılmasını artırır.
  • Performans: Bazı dillerde (örneğin Java), generics tür silme (type erasure) ile uygulanırken, diğerlerinde (örneğin C#, C++) tür bilgisi çalışma zamanında korunur.

Kullanım örnekleri:

  • Koleksiyonlar: Herhangi bir türdeki öğeleri tutabilen genel listeler, kümeler ve haritalar oluşturma.
    // String listesi oluşturma
    List<String> stringList = new ArrayList<>();
    stringList.add("merhaba");
    // Sayı eklemeye çalışırken derleme hatası
    // stringList.add(123);
    
  • Fabrikalar: Farklı türlerde nesneler üretebilen fabrikalar oluşturma.
  • Metodlar: Genel veri türleriyle çalışan metodlar yazma.
    // Değişkenleri takas eden genel metod
    public static void Swap<T>(ref T a, ref T b)
    {
        T temp = a;
        a = b;
        b = temp;
    }
    
  • Sınıflar: Saklanan veya işlenen veri türüne göre genel sınıflar oluşturma.
    // Genel kutu sınıfı
    class Box<T> {
        private T content;
    
        public void setContent(T content) {
            this.content = content;
        }
    
        public T getContent() {
            return content;
        }
    }
    

Object tipi kullanımıyla karşılaştırma (Java'da):

Özellik Generics Object tipi
Tür güvenliği Derleme zamanında Çalışma zamanında (tip dönüşümleriyle)
Dönüşüm gerekliliği Yok Evet
Hatalar Derleme aşamasında tespit edilir Çalışma zamanında ortaya çıkabilir (ClassCastException)
Okunabilirlik Yüksek Daha düşük (hangi türlerin beklendiği belli değil)

Genel olarak, generics daha güvenilir, okunabilir ve tekrar kullanılabilir kod yazmaya olanak tanıyan güçlü bir araçtır.