CodeBlanks Logo Icon CodeBlanks

Bounded type

<T extends Number> ile sınırlandırılmış türü öğrenirsin.

Bounded type parametresi

Bazen tür parametresini belirli bir türün alt türüyle sınırlandırmak istersin. Bounded type bunun için kullanılır: <T extends Number> yazdığında T yalnızca Number veya alt sınıfları olabilir.

Bu sayede T üzerinde Number'ın metotlarını çağırabilirsin; örn. num.doubleValue(). Sınır olmazsa T'nin hangi metotları olduğunu bilemezsin; yalnızca Object metotları kullanılabilir. Bounded type, generic kodun gücünü artırır.

Number metotlarını çağırma

Bounded type sayesinde T üzerinde sınır türünün metotlarını kullanabilirsin. <T extends Number> kısıtında T num değişkeni üzerinden num.doubleValue(), num.intValue() çağrıları yapılır.

Örneğin static <T extends Number> double toDouble(T num) { return num.doubleValue(); } metodu Integer, Double, Long gibi tüm Number alt türlerini kabul eder. Sınırsız <T> olsaydı doubleValue() çağrısı derlenmezdi; çünkü T'nin Number olduğu garanti değildi.

Uygulama toDouble generic metodunu yaz

static <T extends Number> double toDouble(T num) generic metodunu tanımla; gövdesi return num.doubleValue(); olsun. main içinde System.out.println(toDouble(42)); ile çağır.

Başlangıç kodu

Main.java
// toDouble generic metodunu tanımla (T extends Number)

// main: toDouble çağrısı ve println

Örnek çözüm

Main.java
public class Main {
    static <T extends Number> double toDouble(T num) {
        return num.doubleValue();
    }
    public static void main(String[] args) {
        System.out.println(toDouble(42));
    }
}

Beklenen çıktı

42.0

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bounded type bildirimini tamamla

Soru
class Stats____ {
    T value;
    Stats(T value) { this.value = value; }
}
Cevap
class Stats<T extends Number> {
    T value;
    Stats(T value) { this.value = value; }
}

Açıklama: <T extends Number> T'yi Number ile sınırlandırır.

2 <T extends Number> neyi sağlar?

  • T'nin Number metotlarını çağrılmasını Doğru cevap
  • T'nin final olmasını
  • T'nin bir interface olmasını
  • T'nin primitive tür olmasını

Açıklama: Bound sayesinde T üzerinde Number metotları kullanılabilir.

3 Bounded type kavramlarını eşleştir

Kavram Anlamı
<T extends Number> Sınırlandırılmış tür
extends Üst sınır anahtar kelimesi
doubleValue() Number metodu
<T> Sınırsız tür parametresi

Orta seviye bölümündeki tüm dersler