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()) {
// ...
}