Generics

List<String> list = new ArrayList<>();
Коллекция может принимать только строки, иначе будет ошибка компиляции (type-safe).

List<Number> list - new ArrayList<Integer>(); - compile error

Parent[] myArray = new Chile[3]; -  но для массива работает.

public void addAnimal(List<? extends Animal> list) - метод может принимать полиморфные элементы списка. Все, что наследуется от Animal.

public void addAnimal(List<? super Dog> list) - метод может принимать полиморфные элементы списка. Все супер классы для Dog (Object, Animal).

List<?> list = new ArrayList<Integer>(); - список может быть абсолютно любым.

public void addAnimal(List<Object> list) - метод может принимать ТОЛЬКО List<Object>.

Создание своих дженериков:
public class MyClass<T, X>  - класс с двумя дженериками

public <T> add(T t) - void метод с параметром, который обьязательно нужно обьявлять перед методом (если не указан в классе)

Комментариев нет:

Отправить комментарий