List <List <? >> y List <List> son tipos incompatibles en java [duplicado]

Esta pregunta ya tiene una respuesta aquí:

No se puede convertir de List <List> a List <List <? >> 3 respuestas

No obtuve este código para compilar de ninguna manera:

List<List> a = new ArrayList();
List<List<?>> b = new ArrayList();

a = b; // incompatible types
b = a; // incompatible types

Parece que Java no consideraList yList<?> para ser del mismo tipo cuando se trata de genéricos.

¿Porqué es eso? ¿Y hay alguna salida agradable?

Context

Hay una función de biblioteca con la siguiente firma:public <T> Set<Class<? extends T>> getSubTypesOf(final Class<T> type). Esto funciona bien para los tipos simples pasados como argumento, pero en el caso de los genéricos, el resultado no se parametriza con comodines, lo que hace que javac se queje del tipo sin formato. Me gustaría propagar el resultado al resto de mi aplicación comoSet<Class<? extends GenericTypeHere<?>>> pero el elenco simple no funciona como esperaba.

EDIT: Solución

Gracias por las respuestas, así es como lo hago funcionar al final:

@SuppressWarnings({"rawtypes", "unchecked"})
private static Set<Class<? extends GenericTypeHere<?>>> factoryTypes() {
    return (Set) new Reflections("...").getSubTypesOf(GenericTypeHere.class);
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta