Last active
December 15, 2015 17:49
-
-
Save jafs/5298970 to your computer and use it in GitHub Desktop.
Sobrescritura de toString() que permite obtener de una forma clara el contenido de los objetos. Está preparado para poder ser heredado. Se ha incluido la impresión de objetos declarados como finales.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Obtiene una cadena con los valores del objeto. | |
* @return Cadena con los valores del objeto. | |
*/ | |
@Override | |
public String toString() { | |
final StringBuilder objBuilder = new StringBuilder(); | |
// Inicio de cadena. | |
objBuilder.append(getClass().getSimpleName()); | |
objBuilder.append(" {"); | |
try { | |
// Comienza el análisis por la clase actual y recorre los elementos hasta llegar a la | |
// clase base Object. | |
Class<?> objClase = getClass(); | |
Field[] arCampos; | |
String sTipo; | |
while (null != objClase | |
&& !Object.class.getSimpleName().equals(objClase.getSimpleName())) { | |
arCampos = objClase.getDeclaredFields(); | |
if (null != arCampos) { | |
// Recorre los campos del objeto. Si es una constante omite su lectura. | |
for (Field objCampo : arCampos) { | |
sTipo = objCampo.getType().toString(); | |
if (!Modifier.isFinal(objCampo.getModifiers()) | |
|| (sTipo.startsWith("class") | |
&& !sTipo.endsWith(String.class.getCanonicalName()))) { | |
objCampo.setAccessible(true); | |
objBuilder.append(objCampo.getName()); | |
objBuilder.append("->"); | |
objBuilder.append(objCampo.get(this)); | |
objBuilder.append("; "); | |
} | |
} | |
} | |
// Pasa a la siguiente clase padre. | |
objClase = objClase.getSuperclass(); | |
} | |
} catch (final IllegalArgumentException e) { | |
} catch (final IllegalAccessException e) { | |
} | |
// Fin de cadena. Si hay datos elimina el último "; ". | |
if (objBuilder.length() > getClass().getSimpleName().length() + 2) { | |
objBuilder.setLength(objBuilder.length() - 2); | |
} | |
objBuilder.append('}'); | |
return objBuilder.toString(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment