В чем разница между <? super E> и <? extends E>?
Например, если вы посмотрите класс java.util.concurrent.LinkedBlockingQueue, для конструктора будет следующая подпись:
public LinkedBlockingQueue(Collection<? extends E> c)
и для одного для метода:
public int drainTo(Collection<? super E> c)
