Java Generics'te joker karakterler, tam türü bilmediğinizde kullanılır. Esnek ve yeniden kullanılabilir kod yazmanıza olanak tanırlar. Joker karakter ? ile temsil edilir? (soru işareti). Joker karakterler çoğunlukla farklı genel türleri güvenli bir şekilde kabul etmek için yöntem parametrelerinde kullanılır.
Java'daki joker karakter türleri
1. Üst Sınırlı Joker Karakterler
Bu joker karakterler, bir değişken üzerindeki kısıtlamaları gevşetmek istediğinizde kullanılabilir. Örneğin, Listede çalışan bir yöntem yazmak istediğinizi varsayalım.< Integer >Liste< Double >ve Liste< Number >bunu üst sınırlanmış bir joker karakter kullanarak yapabilirsiniz.
Üst sınırlı bir joker karakter bildirmek için joker karakterini ('?') ve ardından extends anahtar sözcüğünü ve ardından üst sınırını kullanın.
genel statik geçersiz ekleme (Liste extends Number>liste)
java'da null olup olmadığını kontrol edin
Uygulama:
Javaimport java.util.Arrays; import java.util.List; class WildcardDemo { public static void main(String[] args) { // Upper Bounded Integer List List<Integer> list1 = Arrays.asList(4 5 6 7); System.out.println('Total sum is:' + sum(list1)); // Double list List<Double> list2 = Arrays.asList(4.1 5.1 6.1); System.out.print('Total sum is:' + sum(list2)); } private static double sum(List extends Number> list) { double sum = 0.0; for (Number i : list) { sum += i.doubleValue(); } return sum; } }
Çıkış
Total sum is:22.0 Total sum is:15.299999999999999
Açıklama: Yukarıdaki programda liste1 Tamsayı değerlerini, liste2 ise Çift değerlerini tutar. Her ikisi de joker karakter kullanan toplam yöntemine aktarılır extends Number>. Bu, Integer veya Double gibi Number'ın alt sınıfı olan bir türün herhangi bir listesini kabul edebileceği anlamına gelir.
2. Alt Sınırlı Joker Karakterler
Joker karakter ('?') ve ardından süper anahtar sözcüğü ve ardından alt sınırı kullanılarak ifade edilir: super A>.
c programlamada matrisler
Sözdizimi: Koleksiyon türü super A>
Uygulama:
Javaimport java.util.Arrays; import java.util.List; class WildcardDemo { public static void main(String[] args) { // Lower Bounded Integer List List<Integer> list1 = Arrays.asList(4 5 6 7); // Integer list object is being passed printOnlyIntegerClassorSuperClass(list1); // Number list List<Number> list2 = Arrays.asList(4 5 6 7); // Integer list object is being passed printOnlyIntegerClassorSuperClass(list2); } public static void printOnlyIntegerClassorSuperClass( List super Integer> list) { System.out.println(list); } }
Çıkış
[4 5 6 7] [4 5 6 7]
Açıklama: Burada printOnlyIntegerClassorSuperClass yöntemi yalnızca Tamsayıyı veya onun üst sınıflarını (Number gibi) kabul eder. Double'ın bir listesini iletmeye çalışırsanız, derleme zamanı hatası verir çünkü Double, Tamsayı'nın bir üst sınıfı değildir.
Not: Bir yapıdan değerler almak istediğinizde genişletme joker karakterini, bir yapıya değer koyarken ise süper joker karakteri kullanın. Değerleri bir yapıya alırken ve koyarken joker karakter kullanmayın. Joker karakter için bir üst sınır belirtebilirsiniz veya bir alt sınır belirtebilirsiniz ancak ikisini birden belirleyemezsiniz.
3. Sınırsız Joker Karakter
Bu joker karakter türü, joker karakter (?) kullanılarak belirtilir, örneğin Liste. Buna bilinmeyen türlerin listesi denir. Bunlar aşağıdaki durumlarda faydalıdır:
buz ve kar arasındaki fark
- Object sınıfında sağlanan işlevsellik kullanılarak kullanılabilecek bir yöntem yazarken.
- Kod, genel sınıfta type parametresine bağlı olmayan yöntemler kullanırken
Uygulama:
Javaimport java.util.Arrays; import java.util.List; class unboundedwildcardemo { public static void main(String[] args) { // Integer List List<Integer> list1 = Arrays.asList(1 2 3); // Double list List<Double> list2 = Arrays.asList(1.1 2.2 3.3); printlist(list1); printlist(list2); } private static void printlist(List> list) { System.out.println(list); } }
Çıkış
[1 2 3] [1.1 2.2 3.3]