Generic sınıf
- Java kursu
- Orta seviye
- Ders 82/116
- 5 dk
<T> ile generic sınıf tanımlamayı öğrenirsin.
Generic sınıf
Bir generic sınıf, tür parametresiyle tanımlanan bir şablondur. class Box<T> { T value; } yazdığında T bir tür parametresidir; sınıfı kullanırken somut bir tür verirsin: Box<String> b = new Box<>();.
Bu sayede aynı sınıf hem String hem Integer hem de başka türler için tip-güvenli çalışır. Cast yok, ClassCastException riski azalır. Tür parametresi geleneksel olarak tek harfle yazılır: T (type), E (element), K/V (key/value).
Generic sınıf kullanımı
Bir generic sınıfı somut türle kullanmak için Box<String> b = new Box<>(); yazarsın. Sağ tarafın <> içi boş bırakılabilir; derleyici sol taraftan çıkarım yapar (diamond operator).
Alan ataması b.value = "Merhaba"; şeklinde yapılır. String s = b.value; yazdığında cast gerekmez; derleyici value'nun String olduğunu bilir. Farklı tür verirsen derleme hatası alırsın; bu generic'lerin en büyük gücüdür.
Uygulama Box<T> sınıfını tanımla
class Box<T> tanımla; içinde T value; alanı olsun. main içinde Box<String> b = new Box<>(); ile bir kutu oluştur, b.value = "Kitap"; ata ve System.out.println(b.value); ile yazdır.
Başlangıç kodu
// Box<T> generic sınıfını tanımla
// main: Box<String> örneği oluştur, değer ata ve yazdırÖrnek çözüm
class Box<T> {
T value;
}
public class Main {
public static void main(String[] args) {
Box<String> b = new Box<>();
b.value = "Kitap";
System.out.println(b.value);
}
}Beklenen çıktı
Kitap
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Box<String> ifadesi neyi belirtir?
- Bir dizi tanımladığını
- Box sınıfının final olduğunu
- String'i alt sınıf yaptığını
- T parametresinin String olacağını Doğru cevap
Açıklama: < > içindeki tür, T parametresinin somut türüdür.
2 Generic sınıf bildirimini tamamla
class Box____ {
T value;
}
class Box<T> {
T value;
}
Açıklama: <T> Box sınıfına bir tür parametresi verir.
3 Generic sınıf kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
<T> |
Tür parametresi bildirimi |
Box<String> |
Somut türle kullanım |
<> |
Diamond operator |
T value |
Generic alan |