我无法理解为什么编译器不允许以下赋值:
Consumer<Collection<? super Project>> consumer = new Consumer<Collection<Project>>(){};
我通常理解如何使用“?super ...”并理解为什么它在这些类似的例子中工作正常:
Consumer<? super Project> projectConsumer = new Consumer<Project>(){};
或
Consumer<? super Project> objectConsumer = new Consumer<Object>(){};
甚至
Collection<? super Project> objectCollection = new ArrayList<Object>();
但是我不知道这些与第一个例子有何不同。 有人可以解释为什么第一个例子不能编译吗?