我正在尝试为我的自定义类编写断言类
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!
}
它编译正常
不,它没有编译好。我混淆了编译器和检查器。但是这种转换有什么问题呢?