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

Eine unformatierte Liste wird in @ konvertierList<?> Alles gut. Warum kann eine Liste von unformatierten Listen nicht in eine Liste von @ konvertiert werdeList<?>?

{   // works
    List raw = null;
    List<?> wild = raw;
}
{   // Type mismatch: cannot convert from List<List> to List<List<?>>
    List<List> raw = null;
    List<List<?>> wild = raw;
}

Hintergrundgeschicht (mildern das xy Problem):

Eine API, die ich verwenList<JAXBElement>. Ich weiß zufällig, dass es immerList<JAXBElement<String>>. Ich plane eine Schleife und baue mein eigenesList<String>, aber ich habe versucht, die Warnung des Rohtyp-Compilers zu beheben (aber nicht zu unterdrücken), wenn ich @ schreiList<JAXBElement> raw = api();.

Ich habe es versucht

List<JAXBElement<?>> raw = api();
List<JAXBElement<?>> raw = (List<JAXBElement<?>>) api();

Aber diese geben den Typ Mismatch-Fehler.

Interessanterweise gibt dies keine Warnung oder Fehler:

for (JAXBElement<?> e : api()) {
    // ...
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage