1
resposta

[Dúvida] Atributo episodios da Classe DadosTemporada

Olá ! Gostaria de saber, o porquê que eu posso afirmar para a class "DadosTemporada" que a lista de episódios tem objetos do tipo "DadosEpisodio".

Eu tinha colocado que o List iria receber um tipo desconhecido (List<?>), pois cada episódio é um objeto ainda não desserializado com a class "DadosEpisodio".

A classe "List" já faz essa desserialização automaticamente?

Resumindo: O porquê de isso dar certo: ArrayList episodios

1 resposta

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.