У меня вопрос Java generic.? super Тип Java Generics
У меня следующая иерархия классов:
Employee is base class
Manager extends Employee
Executive extends Manager
В следующей строке (1) не компилируется:
(1) List<? super Manager> foos1 = new ArrayList<Executive>(); // error
В строках ниже 2 и 3 компиляция нормально:
(2) List<? super Manager> foos2 = new ArrayList<Manager>();
(3) List<? super Manager> foos3 = new ArrayList<Employee>();
однако, хотя я все еще могу добавить Исполнителя так:
(4) foos2.add(new Manager("Manager!",123));
(5) foos3.add(new Executive("Executive!",1.0,2));
Пожалуйста, объясните логику, почему я не могу присвоить переменной
<? super Manager> = ArrayList<Executive>
где исполнительный супер диспетчера, но я все еще могу добавить Исполнительный объект в список массива?
большое спасибо!
так называемого дубликата (т.е. ПЕСГ) не отвечает на мой вопрос. –
Я думаю, что это так .. но это мое мнение .. Ну, я снова открыл ваш вопрос :) – TheLostMind
http://stackoverflow.com/questions/2723397/java-generics-what-is-pecs –