List <List <? >> e List <List> são tipos incompatíveis em java [duplicado]
Esta pergunta já tem uma resposta aqui:
Não é possível converter da lista <List> para a lista <List <? >> 3 respostasNão recebi esse código para compilar de qualquer maneira:
List<List> a = new ArrayList();
List<List<?>> b = new ArrayList();
a = b; // incompatible types
b = a; // incompatible types
Parece que o java não consideraList
eList<?>
para ser do mesmo tipo quando se trata de genérico
Por que é que? E existe alguma saída legal?
Context Existe uma função de biblioteca com a seguinte assinatura:public <T> Set<Class<? extends T>> getSubTypesOf(final Class<T> type)
. Isso funciona bem para tipos simples passados como argumento, mas no caso de genéricos, o resultado não é parametrizado com curinga, fazendo com que o javac reclame sobre o tipo bruto. Gostaria de propagar o resultado para o restante do meu aplicativo comoSet<Class<? extends GenericTypeHere<?>>>
mas o elenco simples não funciona como eu esperav
Obrigado pelas respostas, aqui está como eu faço para que ele funcione no final:
@SuppressWarnings({"rawtypes", "unchecked"})
private static Set<Class<? extends GenericTypeHere<?>>> factoryTypes() {
return (Set) new Reflections("...").getSubTypesOf(GenericTypeHere.class);
}