Bom, vamos ver se eu não me confundo aqui… lá vai:
Primeiro: um método que recebe List<? super Banda> pode receber: List<Banda>, List<Carnaval> ou List<Object>. Ou seja, pode receber uma lista de qualquer coisa que é no máximo uma Banda.
Se você sabe que sua Lista, independente de qual for é uma lista de no máximo uma Banda, você pode colocar uma Banda lá dentro. Isso porque uma Banda é uma Banda, é um Carnaval e é um Object.
Mas, com o você não sabe o tipo especifico da Lista, se voce der um get voce recebera um Object (nao testei mas é o que faz mais sentido).
LPJava
mais pq com extends nao posso add na ao conjunto?
Paulo_Silveira
o ? extends Banda não pode adicionar porque a lista pode ser, por exemplo, uma lista de uma classe X que extends Banda. Ai se voce adicionar uma banda, vai quebrar o type safety que o generics da.