Присваивание дженериков переменным

Присваивание дженериков переменным

Для типов параметров наследование не поддерживается. Нельзя присвоить переменной типа ArrayList<Number> объект типа ArrayList<Integer> или ArrayList<Double>.


List<Number> list1 = new ArrayList<Integer>(); // ошибка компиляции
ArrayList<> list2 = new ArrayList<Integer>(); // ошибка компиляции
Переменной типа List можно присвоить объект типа ArrayList. Но для дженериков тип параметра, указываемый в угловых скобках, должен совпадать.
Хотя ArrayList<T> реализует List<T> для любого типа T, но ArrayList<Integer> не реализует ни List<Number>, ни ArrayList<Number>, ни ArrayList<>.
Дженерики