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 respostas

Nã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

EDIT: Solução

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);
}