miércoles, 27 de abril de 2016

DUMP de una objeto en Java




En muchas ocasiones me ha ocurrido que quiero revisar el contenido de mis objetos y revisar cuales son los valores que tiene asignados, infortunadamente no hay una función en Java que permita hacer ese comportamiento similar al print_r() o var_dump() del tan famoso PHP.

Afortunadamente leí por ahí un truco y quiero compartirlo con ustedes. Es una implementación simple pero con mucho potencial y consiste en recorrer en un ciclo todos los campos de una clase, sabiendo el nombre, se obtiene su valor y se imprime por consola. Veamos:

Field[] fields = obj.getClass().getDeclaredFields();
try {

     //recorremos el array obtenido a través de nuestro objeto
    for (Field field : fields) {  
               
        //field.getName() da el nombre del campo y field.get obtiene el valor
        System.out.println(field.getName() + " : " + field.get(obj));  
           
     }
} catch (IllegalArgumentException | IllegalAccessException ex) {
      Logger.getLogger(JavaDump.class.getName()).log(Level.SEVERE, null, ex);
}


Como pueden ver, es muy simple el aplicarlo, solo hay que crear la clase que se quiere extraer, y mandarsela como parámetro a esta función.

Si te interesa el proyecto, dejo el proyecto de Netbeans y las clases por separado, para que en caso de no tener este IDE, puedas intentarlo por tu cuenta.

Aquí el proyecto de NetBeans

Aquí las clases por separado

Espero te sea de utilidad ;)