Olá!
Quando declaramos a lista como List<DadosEpisodio>
, estamos dizendo explicitamente que ela vai conter apenas objetos do tipo DadosEpisodio
. Isso é possível porque a classe DadosEpisodio
já está criada e você está usando ela para transformar os dados JSON em objetos Java. O framework de desserialização é quem faz esse trabalho, convertendo o JSON para objetos Java, desde que o conteúdo do JSON esteja compatível com a estrutura da classe.Já quando você usa List<?>
, está permitindo que a lista tenha objetos de qualquer tipo, o que não é o ideal aqui, porque você quer garantir que todos os elementos sejam do tipo DadosEpisodio
.
Vale lembrar que a lista em si (List
) não faz a conversão do JSON. Quem faz isso é o framework (como o Jackson), que utiliza as classes e suas anotações para realizar o mapeamento corretamente.
Por exemplo, quando você usa a anotação @JsonAlias("Episodes")
na sua lista de DadosEpisodio
, está informando ao Jackson que o campo "Episodes" do JSON deve ser associado à lista presente na sua classe DadosTemporada
.