Javada Generics Kavramı
Java’da generics nedir, neden kullanılır? Tip güvenliği, yeniden kullanılabilir sınıflar ve koleksiyonlarda generics kullanımını örneklerle öğrenin.
Java’da Generics Kavramı
Java’da generics, sınıf, arayüz ve metotlara tür parametreleri tanımlamayı sağlayan bir yapıdır. Bu yapı sayesinde tip güvenliği sağlanır ve kodun yeniden kullanılabilirliği artar. Koleksiyon yapıları gibi farklı veri tiplerini işleyebilen yapılarda sıklıkla kullanılır.
1. Generics Neden Kullanılır?
- Tip güvenliği sağlar
- Cast (veri dönüştürme) ihtiyacını ortadan kaldırır
- Daha okunabilir ve sürdürülebilir kod sağlar
2. Generic Sınıf Tanımlama
<T> ifadesi generic türü temsil eder. T yerine istediğiniz tür atanabilir.
public class Kutu {
private T icerik;
public void setIcerik(T icerik) {
this.icerik = icerik;
}
public T getIcerik() {
return icerik;
}
}
public class Main {
public static void main(String[] args) {
Kutu kutu1 = new Kutu<>();
kutu1.setIcerik("Merhaba");
System.out.println(kutu1.getIcerik());
Kutu kutu2 = new Kutu<>();
kutu2.setIcerik(123);
System.out.println(kutu2.getIcerik());
}
}
3. Generic Metot Tanımlama
Generics sadece sınıflarda değil, metotlarda da kullanılabilir.
public class Araclar {
public static void yazdir(T veri) {
System.out.println("Veri: " + veri);
}
public static void main(String[] args) {
yazdir("Java");
yazdir(42);
yazdir(3.14);
}
}
4. Koleksiyonlarda Generics Kullanımı
Java koleksiyon sınıfları generics destekler. Bu sayede listelere sadece belirli bir veri türü eklenebilir.
import java.util.ArrayList;
public class ListeOrnegi {
public static void main(String[] args) {
ArrayList isimler = new ArrayList<>();
isimler.add("Ali");
isimler.add("Ayşe");
for (String isim : isimler) {
System.out.println(isim);
}
}
}
5. Sınırlı Tür Parametreleri (Bounded Type Parameters)
Generic türlerin sadece belirli türleri kabul etmesi sağlanabilir.
public class Hesaplayici {
public double topla(T a, T b) {
return a.doubleValue() + b.doubleValue();
}
}
6. Wildcard (Joker Karakter) Kullanımı
? karakteri bilinmeyen bir türü temsil eder. Özellikle metot parametrelerinde esneklik sağlar.
public void listeYazdir(List<?> liste) {
for (Object eleman : liste) {
System.out.println(eleman);
}
}
Java generics yapısı, özellikle büyük ölçekli projelerde kod tekrarını azaltmak ve daha esnek yapılar oluşturmak için vazgeçilmezdir. Hem koleksiyonlarla çalışırken hem de kendi sınıflarınızı oluştururken generics kullanmak, tip güvenliğini artırır ve hata olasılığını azaltır.