List <List <? >> und List <List> sind in Java nicht kompatible Typen [duplicate]

Diese Frage hat hier bereits eine Antwort:

Kann nicht von Liste <Liste> nach Liste <Liste <? >> konvertiert werden 3 Antworten

Ich habe diesen Code nicht so oder so kompilieren lassen:

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

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

Es scheint, dass Java nicht berücksichtigtList undList<?> um derselbe Typ zu sein, wenn es um Generika geht.

Warum das? Und gibt es einen schönen Ausweg?

Kontex

Es gibt eine Bibliotheksfunktion mit folgender Signatur:public <T> Set<Class<? extends T>> getSubTypesOf(final Class<T> type). Dies funktioniert gut für einfache Typen, die als Argument übergeben werden, aber im Fall von Generika wird das Ergebnis nicht mit Platzhaltern parametrisiert, was dazu führt, dass sich javac über rohen Typ beschwert. Ich möchte das Ergebnis an den Rest meiner Bewerbung weitergeben alsSet<Class<? extends GenericTypeHere<?>>> aber einfache Besetzung funktioniert nicht wie ich es erwarte.

EDIT: Lösung

Danke für die Antworten, hier ist, wie ich es am Ende zum Laufen bekomme:

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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage