Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

readme.md

Joker Argümanını (Wildcard Argument) Kullanmak

Jenerikler tür güvenliğini mükemmel bir biçimde sağlar; buna rağmen bazen daha genel düşünmek gerekebilir. Örneğin, yukarıda oluşturduğumuz Nullable sınıfıyla ilgili bir metot yazdığımızı düşünelim. Bu metot Nullable türünde herhangi bir nesneyi parametre olarak alacak ve içindeki değerin null olup olmadığını test edecek. Nullable sınıfı jenerik bir sınıf olduğu için, parametre olarak tanımlarken bir tür belirtmek gerekir. Örneğin aşağıda bu metodun bir örneğini görebilirsiniz:

public static boolean isNullableHasValue(Nullable<String> nullable)
{
	return nullable != null && !nullable.isNull();
}

Bu metot sorunsuz bir şekilde çalışır; fakat yalnızca String türündeki Nullable nesnelerini kabul eder. Takdir edersiniz ki, biz buraya genel bir metot yazmak istiyoruz. Dolayısıyla yalnızca String değil, bütün türleri kapsayan bir Nullable nesnesini parametre olarak almak isteriz.

Bu gibi durumlarda joker argümanını (wildcard argument) kullanırız. Joker argümanını soru işareti (?) ile yazarız. Bu argüman tür parametresi yerine geçer ve bütün türleri temsil eder. Şimdi yukarıdaki metodu joker argümanı kullanarak tekrar yazalım:

public static boolean isNullableHasValue(Nullable<?> nullable)
{
	return nullable != null && !nullable.isNull();
}

Artık bu metodu bütün Nullable nesneleri için kullanabiliriz.

Sınırlandırılmış Joker Argümanı

Joker argümanına da alt veya üst sınır verebilirsiniz. Örneğin yukarıdaki metodu aşağıdaki gibi yazsaydık yalnızca Number sınıfının alt türleri için Nullable nesnelerini parametre olarak alabilecektik:

public static boolean isNullableHasValue(Nullable<? extends Number> nullable)
{
	return nullable != null && !nullable.isNull();
}