Percorrer os atributos de um POJO em Java [Reflection]

Recentemente tive uma atividade para percorrer os atributos de um POJO que eu desconhecia, retornando os seus atributos e valores.

Para simplificar a demonstração foi ocultado os imports, package, métodos gets/sets e o construtor da classe. Vejamos o exemplo:

Reparem que a classe Cliente possui um atributo do tipo endereco.

A terceira classe criada com o método main, instância o objeto cliente e faz a chamada para o método imprimeAtributoseValoresPojo passando como parâmetro a instância da classe cliente.

Após receber a instância da classe cliente é adicionado todos os campos em um array do tipo Field. E com um foreach é acessado o nome e o valor do atributo.

Vejamos a saída no console:

Beleza fera!!! E onde estão os dados do objeto endereço? Por se tratar de um objeto complexo é retornado o endereço em memória. Nesse caso precisamos identificar o tipo do atributo, e a partir disto realizar o mesmo procedimento anterior. Vejamos:

Executando novamente o retorno é esse:

A API de reflection em Java é poderosa e nos permite analisar e manipular várias informações de uma classe (atributos, métodos, construtores e etc). Tive um pouco de dificuldade para obter as informações do objeto endereço e por isso decidi escrever. Caso queiram conhecer a API um pouco melhor, sugiro a leitura desse post ou acessem a documentação.

Abraço 😀

Deixe uma resposta