Skip to content

Instantly share code, notes, and snippets.

@jafs
Last active December 15, 2015 17:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jafs/5298970 to your computer and use it in GitHub Desktop.
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.
/**
* 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