Необработанный список преобразуется в 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()) {
// ...
}