Generici Java - Caratteri jolly con limiti inferiori

Il punto interrogativo (?), Rappresenta il carattere jolly, sta per tipo sconosciuto nei generici. A volte potresti voler limitare i tipi di tipi che possono essere passati a un parametro di tipo. Ad esempio, un metodo che opera sui numeri potrebbe voler accettare solo istanze di Integer o delle sue superclassi come Number.

Per dichiarare un parametro Wildcard con limite inferiore, elenca il?, Seguito dalla parola chiave super, seguito dal suo limite inferiore.

Esempio

L'esempio seguente illustra come viene utilizzato super per specificare un carattere jolly con limite inferiore.

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 {}

Questo produrrà il seguente risultato:

Cat Added
Cat Added