<T estende AnInterface> vs <? estende AnInterface>

Estou um pouco confuso com alguma coisa.

Eu tenho uma classe onde não é uma coleção, mas se refere a objetos genéricos:

    public class XClass<E extends AnInterface>{

        E instanceobject;

        public void add(E toAdd){}
    }

    public interface AnInterface{}

    public class A implements AnInterface{}

    public class B implements AnInterface{}

Eu acredito que li em algum lugar que<? extends AnInterface> deve ser usado (ao declarar uma instância de XClass) se você quiser vários tipos de subtipos no objeto genérico ao mesmo tempo, enquanto<T extends AnInterface> só permitiria que você tivesse um único tipo de subtipo na classe genérica de uma só vez?

No entanto, posso apenas usar:

    XClass<AnInterface> xc = new XClass<AnInterface>();

    A a = new A();
    B b = new B();

    xc.add(a);
    xc.add(b);

e dessa forma eu posso passar em múltiplos subtipos de Supertype para a classe genérica ......

Eu não estou vendo o propósito de usar "?" e há algo de errado com o uso da interface como o parâmetro genérico?

questionAnswers(4)

yourAnswerToTheQuestion