Skip to content

Instantly share code, notes, and snippets.

@jafs jafs/toString.java
Last active Dec 15, 2015

Embed
What would you like to do?
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
You can’t perform that action at this time.