Odak modu

Java 102

Generic Bounded Types

Sınırlandırılmış Türler (bounded types)


Jenerik sınıf veya metot tanımlarken parametre olarak aldığınız türü sınırlandırabilirsiniz. Örneğin, parametre olarak aldığım tür Number sınıfının alt sınıflarından biri olsun, diyebilirsiniz. Böyle bir durumda Number sınıfından türetilmemiş hiçbir sınıfı parametre olarak veremezsiniz.


Tür sınırlandırması yaparken extends veya super deyimi kullanılır. Bu deyimlerden sonra bir sınıf veya arayüz ismi verilir. Bu deyimleri kullanarak parametre olarak jenerik türünü sınırlandırmış oluruz:


  • extends deyimini kullandıysak yalnızca belirttiğimiz türü veya alt sınıflarını kullanabiliriz. Buna üst sınır (upper-bound) denir.


  • super deyimini kullandıysak yalnızca belirttiğimiz türün üst sınıflarını kullanabiliriz. Buna alt sınır (lower-bound) denir.


Şimdi yukarıda yazdığımız Nullable sınıfını güncelleyerek bir örnek yapalım:


public class Nullable<T extends Number>
{
    private final T value;
    
    public Nullable(T value)
    {
    	this.value = value;
    }
    public T getValue()
    {
    	return value;
    }
    public boolean isNull()
    {
    	return value == null;
    }
    @Overridepublic String toString()
    {
    	return isNull() ? "null" : value.toString();
    }
}


Yukarıda da gördüğünüz gibi, jenerik Nullable sınıfına aldığımız tür parametresini extends deyimiyle sınırlandırdık. Buna göre bu sınıfı yalnızca Number veya alt türleriyle kullanabiliriz.

Nullable<Integer> nullableInteger = new Nullable<Integer>(2020);
// Bu kullanım uygundur; çünkü Integer, Number sınıfından türetilmiştir 

Nullable<String> nullableString = new Nullable<String>("2020"); 
// Bu kullanım uygun değildir; String, Number sınıfından türetilmemiştir

shift

Background Pattern
Birlikte öğrenelim

Sektörde en çok aranan yazılım becerilerini kazan

Yapay zeka desteği, birebir mentörlük saatleri, canlı dersler ve senin için özel hazırlanmış içeriklerle eksiklerini tamamla, düzenli geri bildirimler al ve öğrenme sürecini en verimli hale getir.

Yunus Emre Kabakcı

Patika+ mezunu

Patika+ Fullstack Web Development Bootcamp mezunumuz Yunus Emre,

3 ay içinde Katar’dan aldığı teklif ile, global bir şirket olan Pavo Group’da işe başladı!


“İçerik zenginliği, mentor desteği, ileriye dönük bir network sağlaması ve dünyada en çok tercih edilen frameworkler üzerinden bir eğitim veriyor olması Patika+’ı tercih etmemin temel sebepleri oldu!“

Yorumlar

Yorum yapabilmek için derse kayıt olmalısın!