Odak modu
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:
Ş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
Yazılım Kariyerinde İlerlemeni Hızlandıracak Programlar
Patika+ programlarımız ile 4-8 aylık yoğun yazılım kamplarına katıl, temel bilgilerden başlayarak kapsamlı bilgiler edin, yazılım kariyerine başla!
Yorum yapabilmek için derse kayıt olmalısın!