Ana içeriğe geç
Modül 6 · Ders 2 ders 2Kurstaki 12/14~15 min
Modül dersleri (2/2)

Java'daki jenerikler

Jenerikler (Genel Türler), sınıfların, arayüzlerin ve yöntemlerin parametre olarak farklı türler üzerinde çalışmasına olanak sağlamak için Java'da kullanıma sunuldu. Bu, derleme zamanı türünün güvenliğini sağlar ve çalışma zamanında pahalı açık yayınları önler.

Genel Sınıflar

Genel bir sınıf, <T> köşeli ayraçlar kullanılarak tanımlanır; burada T, sınıf başlatıldığında belirtilecek bir tür için yer tutucu görevi görür.

Java
public class Box<T> {
    private T content;

    public void setContent(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }
}

Bir Box nesnesi oluştururken gerçek türü belirtiriz:

Java
Box<Integer> integerBox = new Box<>();
integerBox.setContent(123);
int value = integerBox.getContent(); // No cast needed!

Genel Yöntemler

Farklı tür parametrelerini kabul edebilen tek bir genel yöntem tanımlayabilirsiniz. Type parametresi, yöntemin dönüş türünden önce yerleştirilir.

Java
public static <E> void printArray(E[] elements) {
    for (E element : elements) {
        System.out.println(element);
    }
}

Joker Karakterler ve Sınırlı Türler

Belirli bir türü veya onun alt sınıflarını kabul etmek için extends anahtar sözcüğünü (üst sınır) kullanarak bir jenerik tarafından kabul edilen türleri kısıtlayabiliriz.

Java
public static <T extends Number> void processNumber(T number) {
    // Accepts Integer, Double, Float, etc.
    System.out.println(number.doubleValue());
}

Kendin dene

Egzersiz#java.m6.l2.e1
Denemeler: 0Yükleniyor…

T'yi döndüren getValue() alıcısını ve özel değişken değerini ayarlayan setValue(T value) ayarlayıcısını tanımlayarak genel Box sınıfını tamamlayın.

Düzenleyici yükleniyor…
İpucu göster

Genel tür parametresi 'T'yi kullanarak yöntemleri doğru imzayla yazın.

3 denemeden sonra çözüm mevcut

Egzersiz#java.m6.l2.e2
Denemeler: 0Yükleniyor…

Dizi adlı T[] türünde bir diziyi alan ve her öğeyi for-each döngüsü kullanarak yazdıran statik bir genel yöntem printArray oluşturun.

Düzenleyici yükleniyor…
İpucu göster

"<T>" tür parametresi "statik"ten hemen sonra ve "void" dönüş türünden önce yerleştirilmelidir.

3 denemeden sonra çözüm mevcut

Egzersiz#java.m6.l2.e3
Denemeler: 0Yükleniyor…

String ile parametrelendirilmiş Container arayüzünü uygulayan statik bir StringContainer sınıfı oluşturun. String parametresi alan bir yapıcı tanımlayın ve getItem() yöntemini uygulayın.

Düzenleyici yükleniyor…
İpucu göster

Sınıf imzasında ve "getItem()" dönüş türünde "T" genel türünü "String" ile değiştirin.

3 denemeden sonra çözüm mevcut