<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?