Java Generics
Java Generics, Java programlama dilinde tip güvenliği, kod tekrarını azaltma ve esnek yapıların oluşturulmasını sağlayan güçlü bir özelliktir. Generics sayesinde, sınıflar, arayüzler ve metodlar belirli tiplerle çalışacak şekilde parametrik hale getirilebilir. Bu, runtime sırasında tip hatalarının önüne geçerek compile-time güvenliği sağlar ve özellikle büyük ölçekli backend uygulamalarında, sistem mimarisinde hata ayıklamayı ve bakım sürecini kolaylaştırır.
Generics, yalnızca koleksiyonlar (List, Set, Map gibi) için değil, aynı zamanda kendi veri yapılarınızı, algoritmalarınızı ve yardımcı sınıflarınızı oluştururken de kritik bir rol oynar. Temel kavramlar arasında tip parametreleri (T, K, V), bounded types (sınırlı tipler), wildcards (?) ve OOP prensipleri yer alır. Bu kavramlar, esnek ve güvenli kod yazmanızı sağlar.
Bu eğitimde okuyucu, Java Generics kullanarak parametrik sınıflar ve metodlar oluşturmayı, tip kısıtlamalarını uygulamayı ve wildcards ile esnekliği artırmayı öğrenecek. Ayrıca, memory leak, yetersiz hata yönetimi ve verimsiz algoritmalar gibi yaygın hatalardan kaçınma yolları da ele alınacaktır. Örnekler, backend uygulamalarında gerçek dünya senaryolarına uygun şekilde tasarlanmıştır.
Temel Örnek
javapublic class Kutu<T> {
private T icerik;
public Kutu(T icerik) {
this.icerik = icerik;
}
public T getIcerik() {
return icerik;
}
public void setIcerik(T icerik) {
this.icerik = icerik;
}
public static void main(String[] args) {
Kutu<String> kutuString = new Kutu<>("Merhaba Generics");
System.out.println("İçerik: " + kutuString.getIcerik());
Kutu<Integer> kutuInteger = new Kutu<>(123);
System.out.println("İçerik: " + kutuInteger.getIcerik());
}
}
Yukarıdaki örnekte, Kutu
main metodunda Kutu
Pratik Örnek
javaimport java.util.ArrayList;
import java.util.List;
public class Cift\<K, V> {
private K anahtar;
private V deger;
public Cift(K anahtar, V deger) {
this.anahtar = anahtar;
this.deger = deger;
}
public K getAnahtar() {
return anahtar;
}
public V getDeger() {
return deger;
}
public void setAnahtar(K anahtar) {
this.anahtar = anahtar;
}
public void setDeger(V deger) {
this.deger = deger;
}
public static void main(String[] args) {
List<Cift<String, Integer>> ogrenciNotlari = new ArrayList<>();
ogrenciNotlari.add(new Cift<>("Ali", 95));
ogrenciNotlari.add(new Cift<>("Ayşe", 88));
for (Cift<String, Integer> cift : ogrenciNotlari) {
System.out.println("Öğrenci: " + cift.getAnahtar() + " - Not: " + cift.getDeger());
}
}
}
Cift\
Java Generics ile çalışırken bazı temel en iyi uygulamalar vardır: Parametre tiplerini net tanımlamak, bounded types kullanarak tip kısıtlamaları getirmek, raw type kullanımından kaçınmak ve Object ile dönüşümlerden uzak durmak. Performansı artırmak için Stream API ve koleksiyon metodlarını tercih etmek, kodun okunabilirliğini ve bakımını iyileştirir.
Yaygın hatalardan kaçınmak, memory leak ve ClassCastException gibi runtime hatalarını önlemek için önemlidir. Kodun güvenliği ve verimliliği için tip kontrolü compile-time’da yapılmalı, veri yapıları ve algoritmalar optimize edilmelidir. Ayrıca, generics kullanımı ile backend mimarilerinde güvenli, esnek ve sürdürülebilir çözümler elde edilir.
📊 Referans Tablosu
Element/Concept | Description | Usage Example |
---|---|---|
T | Sınıf veya metod için tip parametresi | Kutu<T> icerik |
K | Anahtar tipi | Cift\<K, V> anahtar |
V | Değer tipi | Cift\<K, V> deger |
Genel Metod | Tip parametreli metod | public <T> void yazdir(T\[] dizi) |
Bounded Type | Tip parametresini sınırlama | public <T extends Number> void hesapla(T deger) |
Wildcard | Bilinmeyen tip | List\<? extends Number> sayilar |
Java Generics, tip güvenliği, kod tekrarını önleme ve esnek yapılar oluşturma açısından kritik bir araçtır. Koleksiyonlar, algoritmalar ve veri yapılarında güvenli ve esnek kullanım sağlar. Bir sonraki adım olarak, wildcards, metod generics ve koleksiyonlar ile entegrasyon gibi ileri seviye konuları öğrenmek, uygulamalarda verimliliği ve güvenliği artıracaktır. Kaynak olarak Java resmi dokümantasyonu ve ileri seviye Java kitapları önerilir.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu konudaki anlayışınızı pratik sorularla test edin.
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek