Fala pessoal, estou tentando iterar sobre os atributos de um objeto usando reflection e recursão mas estou com dificuldade.
Quando um Objeto A tem um atributo que é outro Objeto B, preciso entrar dentro desse objeto B e depois voltar para o Objeto A e continuar iterando sobre os outros atributos. alguém tem alguma dica?
public class Main {
public static void main(String[] args) {
Endereco endereco = new Endereco(1, "Avenida Brasil", 147, "Centro");
Telefone telefone = new Telefone("123456789", 51);
Mypojo cliente = new Mypojo(1, "José da Silva", telefone, new Date(), endereco);
Class<?> classe = cliente.getClass();
Field[] campos = classe.getDeclaredFields();
try {
ValidateNullFields.imprimeAtributoseValoresPojo(cliente, campos, 0);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
public class ValidateNullFields {
public static Field[] imprimeAtributoseValoresPojo(Object object, Field[] campos, int i) throws IllegalAccessException {
if (i < campos.length) {
campos[i].setAccessible(true);
System.out.println(campos[i].getName() + ": " + campos[i].get(object));
if (campos[i].getType().toString().contains("model")) {
return imprimeAtributoseValoresPojo(campos[i].get(object), campos[i].getType().getDeclaredFields(), 0);
}
return imprimeAtributoseValoresPojo(object, campos, i = i + 1);
}
return null;
}
}