
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<>.