Этот вопрос уже имеет ответ здесь:
Почему мы не можем сделать
List mylist = ArrayList();
Это должен быть этот путь, потому что мы можем сделать: Породите = новый Ребенок ();
Редактирование: Ожидайте, на самом деле это работает:
List<Parent> list = new ArrayList<Parent>();
List<ChildA> tmp = new ArrayList<ChildA>();
list.addAll(tmp);
List<ChildB> tmp2 = new ArrayList<ChildB>();
list.addAll(tmp2);
Это просто, что прямой бросок не поддерживается.