Невозможно написать сложное универсальное определение для класса

Я пытаюсь написать класс утверждений для своего пользовательского класса.

public class ChangeCollector<T> 
   extends ArrayList<ChangeEntry<T>> 

и я пишу

public class ChangeCollectorAssert
   <T, EA extends AbstractAssert<EA, ChangeEntry<T>>> 
      extends AbstractListAssert
         <ChangeCollectorAssert<T, EA>, ChangeCollector<T>, ChangeEntry<T>, EA>

и это ругается

Type parameter 'ChangeCollector' is not within its bound; 
should implement 'java.util.List<? extends ChangeEntry<T>>'

но похоже, что он реализует List, не так ли?

Разве ArrayList<ChangeEntry<T>> нельзя присвоить List<? extends ChangeEntry<T>>?

ОБНОВЛЕНИЕ

Я написал следующий код:

private static <T> void test01() {
      List<? extends T> list1;
      ChangeCollector<T> list2 = new ChangeCollector<T>();

      list1 = list2; // ok!
   }

и компилируется нормально

Нет, не скомпилировалось нормально. Я перепутал компилятор и чекер. Но в чем проблема с этим преобразованием?


person Dims    schedule 02.09.2016    source источник
comment
Посмотрите здесь docs.oracle.com/javase/tutorial/java/ дженерики/inheritance.html   -  person Wallkan    schedule 02.09.2016
comment
Выглядит известным. Где конкретно смотреть?   -  person Dims    schedule 02.09.2016
comment
но похоже, что он реализует List, не так ли? ошибка говорит явно, что ему нужно реализовать, и это не List, это java.util.List<? extends ChangeEntry<T>> есть большая разница между этим и ArrayList<ChangeEntry<T>>, потому что это не так.   -  person    schedule 02.09.2016
comment
Разве ChangeCollector<ChangeEntry<T>> не должно быть ChangeCollector<T>? ChangeCollector<ChangeEntry<T>> расширяет ArrayList<ChangeEntry<ChangeEntry<T>>>.   -  person user2357112 supports Monica    schedule 02.09.2016
comment
Это может исправить: public class ChangeCollector<T extends ChangeEntry<?>> extends ArrayList<T> {   -  person Bohemian♦    schedule 02.09.2016