Não é possível converter da lista <lista> para a lista <lista <? >>

Uma lista bruta é convertida emList<?> bem. Por que uma lista de listas brutas não pode ser convertida em uma lista deList<?>?

{   // 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;
}

História de fundo (para mitigaro problema xy):

Uma API que estou usando retornaList<JAXBElement>. Por acaso sei que é sempreList<JAXBElement<String>>. Eu pretendo fazer um loop e construir o meu próprioList<String>, mas estava tentando corrigir (mas não suprimir) o aviso do compilador de tipo bruto quando escrevoList<JAXBElement> raw = api();.

Eu tentei:

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

mas isso gera o erro de incompatibilidade de tipo.

Curiosamente, isso não dá aviso ou erro:

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

questionAnswers(3)

yourAnswerToTheQuestion