1
resposta

[Projeto] Outra forma de obter lista

Boa noite,

Ao revisar o código com a ajuda de uma IA, encontrei uma forma de desserializar uma lista utilizando TypeReference. Quando estava resolvendo o desafio, não pensei nessa abordagem que a professora Jack utilizou. Minha primeira tentativa foi apenas alterar os parâmetros de saída e o método obterDados, porém isso acabou gerando um erro.

@Override
public <T> List<T> obterDados(String json, Class<T> classe) {
    try {
        return mapper.readValue(json, classe);
    } catch (Exception e) {
        return null;
    }
}

Com a ajuda da IA, consegui implementar da seguinte forma:

@Override
public <T> List<T> obterLista(String json, TypeReference<List<T>> tipo) {
    try {
        return mapper.readValue(json, tipo);
    } catch (JsonProcessingException e) {
        throw new RuntimeException(e);
    }

Pelo que entendi, isso acontece porque, no momento da execução, o Java perde a informação do tipo da lista . Utilizando TypeReference, conseguimos manter essa referência de tipo, permitindo que o Jackson faça a desserialização corretamente para List.

1 resposta

Oi, José! Como vai?

Agradeço por compartilhar seus aprendizados com a comunidade Alura.

Eu gostei da sua análise sobre a desserialização de listas e da forma como você explorou outra solução usando TypeReference. Sua explicação sobre a perda de informação de tipo em tempo de execução no Java está correta e mostra que você buscou entender o motivo do erro, não apenas ajustar o código.

Essa postura de investigar alternativas e comparar abordagens fortalece muito o aprendizado.

Continue explorando essas variações de implementação, pois isso ajuda a compreender melhor como generics e bibliotecas como o Jackson funcionam na prática.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!