//Intuitively I would expect this to mean that test is set containing objects
//that subclass AbstractGroup
Set<? extends AbstractGroup> test;
不,这意味着它是一组特定的?扩展了AbstractGroup。而且您和编译器都无法知道那吗?是的,因此您无法向该Set添加任何东西。
您可以将集合的值分配给AbstractGroup类型的变量,但不能相反。
相反,您需要这样做:
Set<? super AbstractGroup> test;
该原理有时称为PECS,并且在此答案中得到了很好的解释。



