Необработанный список преобразуется в List<?>
просто отлично. Почему список исходных списков не может быть преобразован в список List<?>
?
{ // 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;
}
Backstory (для уменьшения проблемы xy):
API, который я использую, возвращает List<JAXBElement>
. Я знаю, что это всегда List<JAXBElement<String>>
. Я планирую цикл и создать свой собственный List<String>
, но я пытался исправить (но не подавлять) предупреждение о компиляторе исходного типа, когда пишу List<JAXBElement> raw = api();
.
Я пробовал:
List<JAXBElement<?>> raw = api();
List<JAXBElement<?>> raw = (List<JAXBElement<?>>) api();
но они дают ошибку несоответствия типа.
Интересно, что это не дает никаких предупреждений или ошибок:
for (JAXBElement<?> e : api()) {
// ...
}