Java Generics - Düşük Sınırlı Joker Karakterler
Soru işareti (?) Joker karakteri temsil eder, jeneriklerde bilinmeyen türü temsil eder. Bir tür parametresine geçirilmesine izin verilen tür türlerini kısıtlamak isteyeceğiniz zamanlar olabilir. Örneğin, sayılar üzerinde çalışan bir yöntem, yalnızca Tamsayı örneklerini veya Number gibi üst sınıflarını kabul etmek isteyebilir.
Daha düşük sınırlı bir Wildcard parametresi bildirmek için,? İşaretini, ardından super anahtar sözcüğünü ve ardından alt sınırını listeleyin.
Misal
Aşağıdaki örnek, süper'in daha düşük bir joker karakter belirtmek için nasıl kullanıldığını göstermektedir.
package com.tutorialspoint;
import java.util.ArrayList;
import java.util.List;
public class GenericsTester {
public static void addCat(List<? super Cat> catList) {
catList.add(new RedCat());
System.out.println("Cat Added");
}
public static void main(String[] args) {
List<Animal> animalList= new ArrayList<Animal>();
List<Cat> catList= new ArrayList<Cat>();
List<RedCat> redCatList= new ArrayList<RedCat>();
List<Dog> dogList= new ArrayList<Dog>();
//add list of super class Animal of Cat class
addCat(animalList);
//add list of Cat class
addCat(catList);
//compile time error
//can not add list of subclass RedCat of Cat class
//addCat(redCatList);
//compile time error
//can not add list of subclass Dog of Superclass Animal of Cat class
//addCat.addMethod(dogList);
}
}
class Animal {}
class Cat extends Animal {}
class RedCat extends Cat {}
class Dog extends Animal {}
Bu, aşağıdaki sonucu verecektir -
Cat Added
Cat Added