Как указано выше, список не может быть дифференцирован между List<Object>
и List<String>
или List<Integer>
.
Я решил это сообщение об ошибке для аналогичной проблемы:
List<String> strList = (List<String>) someFunction();
String s = strList.get(0);
со следующим:
List<?> strList = (List<?>) someFunction();
String s = (String) strList.get(0);
Объяснение: Преобразование первого типа подтверждает, что объект является списком, не заботясь о типах, находящихся внутри (поскольку мы не можем проверить внутренние типы на уровне списка). Второе преобразование теперь требуется, потому что компилятор знает, что List содержит какие-то объекты. Это проверяет тип каждого объекта в Списке по мере его доступа.