为什么我会收到未经检查的分配警告?

时间:2015-04-14 03:35:38

标签: java generics abstract-class

我有以下界面和类定义......

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的元素,所以我很难理解为什么会出现错误

1 个答案:

答案 0 :(得分:2)

变量A b属于原始类型。也许您打算使用A<Foo> b代替。