Головна‎ > ‎Java‎ > ‎Додатково‎ > ‎

Wildcards

public void F1(Class1<?> a) { }                                 // усі типи
public void F1(Class1<? extends Numbers> a) { }     // усі хто успадковує Numbers
public void F1(Class1<? super Numbers> a) { }       // вище Numbers, аж до Object

F1(new Class1<Integers>);
F1(new Class1<Worker>);     
F1(new Class1<Object>);    
    
 



Приклад

import java.util.ArrayList;
import java.util.List;

public static void main(String[] args) {
     List<Animal> listOfAnimal = new ArrayList<>();
     listOfAnimal.add(new Animal(1));
     listOfAnimal.add(new Animal(2));
     Show(listOfAnimal);

     List<Cat> listOfCats = new ArrayList<>();
     listOfCats.add(new Cat());
     listOfCats.add(new Cat());
     Show(listOfCats);
}

public static void Show(List<? extends Animal> list) {
     for(Animal animal : list) {
          System.out.println(animal);
     }
}

-----------------

public class Animal {
     private int id;

     public Animal() {
     }

     public Animal(int id) {
          this.id = id;
     }

     public String toString() {
          return String.valueOf(id);
     }
}

-----------------

public class Cat extends Animal {

}