Do kontrolera wysyłam obiekt DTO https://pastebin.com/d4SHZuZh. Do deserializacji z JSON używam klasy Builder @JsonDeserialize(builder = ContributionNewRequest.Builder.class).
Elementami kolekcji są obiekty typu ? extends MovieInfoDTO dziedziczące z MovieInfoDTO.
Kiedy pobieram elementy z listy np. elementsToAdd
contribution.getElementsToAdd()
.forEach(boxOffice -> {
...
});
okazuje się, że obiekt boxOffice jest typu java.util.LinkedHashMap.
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.jonki.popcorn.common.dto.movie.BoxOffice
at java.util.ArrayList.forEach(ArrayList.java:1257) ~[na:1.8.0_171]
Znalazłem wzmiankę na ten temat w internecie http://www.baeldung.com/jackson-collection-array, że elementy z kolekcji podczas konwersacji z JSON na typ Java są domyślnie ustawiane jako LinkedHashMap.
Jaki zabieg powinienem zastosować, aby poprawnie konwertowało obiekty na mój typ ? extends MovieInfoDTO.