logo

Java'da joker karakterler

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 (Listeliste)

java'da null olup olmadığını kontrol edin

Uygulama:

Java
import 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. 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:

c programlamada matrisler

Sözdizimi: Koleksiyon türü

Uygulama: 

Java
import 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:

Java
import 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]


Test Oluştur