我有以下界面和类定义......
abstract interface I{}
class Foo implements I{}
abstract class A<T extends I> {
List<T> list;
}
class B extends A<Foo> {}
所有定义都可以正常工作。然后我想做以下事情:
A b = new B();
List<? extends I> iList = b.list;
编译器确实会给我一个Unchecked Assignment
警告......但为什么呢? A
的所有列表都不是<? extends I>
类型的列表吗? b.list总是有扩展I的元素,所以我很难理解为什么会出现错误
答案 0 :(得分:2)
变量A b
属于原始类型。也许您打算使用A<Foo> b
代替。