Bounded type
- Java kursu
- Orta seviye
- Ders 84/116
- 5 dk
<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
// toDouble generic metodunu tanımla (T extends Number)
// main: toDouble çağrısı ve printlnÖrnek çözüm
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
class Stats____ {
T value;
Stats(T value) { this.value = value; }
}
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 |