El método toString() de la clase String es realmente muy implementado en el ámbito Java. Provee un mecanismo simple y conveniente para debugear clases durante el desarrollo. También es muy utilizado para loggear y para pasar mensajes de errores informativos a los constructores de una Exception y a los asserts de los unit tests.
Cuando es usado en estos modos informales, la implementación no viene diseñada, por lo que se debe sobreescribir su implementación heredada y adaptarla a las necesidades del objeto que se quiere imprimir.
Por Ejemplo:
import java.util.*;
public class Car {
private String fName = "Dodge";
private int fNumDoors = 2;
private Date fYearManufactured = new Date();
private String fColor = "Fuchsia";
private List fOptions = Arrays.asList("Air Conditioning");
public static void main(String... aArgs){
Car car = new Car();
System.out.println(car);
}
@Override
public String toString() {
StringBuilder result = new StringBuilder();
String NEW_LINE = System.getProperty("line.separator");
result.append(this.getClass().getName() + " Object {" + NEW_LINE);
result.append(" Name: " + fName + NEW_LINE);
result.append(" Number of doors: " + fNumDoors + NEW_LINE);
result.append(" Year manufactured: " + fYearManufactured + NEW_LINE );
result.append(" Color: " + fColor + NEW_LINE);
//Note that Collections and Maps also override toString
result.append(" Options: " + fOptions + NEW_LINE);
result.append("}");
return result.toString();
}
}
Resultado del Ejemplo:
Car Object {
Name: Dodge
Number of doors: 2
Year manufactured: Wed Aug 29 15:49:10 ADT 2007
Color: Fuchsia
Options: [Air Conditioning]
}
Esta es una implementación de toString() de Apache Commons para inspeccionar tanto los valores de los atributos como los nombres de estos y generar dinámicamente mediante reflection el String deseado.
Por Ejemplo:
Bueno si te quedaron dudas, deja tus comentarios...
Saludos!
Cuando es usado en estos modos informales, la implementación no viene diseñada, por lo que se debe sobreescribir su implementación heredada y adaptarla a las necesidades del objeto que se quiere imprimir.
Por Ejemplo:
import java.util.*;
public class Car {
private String fName = "Dodge";
private int fNumDoors = 2;
private Date fYearManufactured = new Date();
private String fColor = "Fuchsia";
private List
public static void main(String... aArgs){
Car car = new Car();
System.out.println(car);
}
@Override
public String toString() {
StringBuilder result = new StringBuilder();
String NEW_LINE = System.getProperty("line.separator");
result.append(this.getClass().getName() + " Object {" + NEW_LINE);
result.append(" Name: " + fName + NEW_LINE);
result.append(" Number of doors: " + fNumDoors + NEW_LINE);
result.append(" Year manufactured: " + fYearManufactured + NEW_LINE );
result.append(" Color: " + fColor + NEW_LINE);
//Note that Collections and Maps also override toString
result.append(" Options: " + fOptions + NEW_LINE);
result.append("}");
return result.toString();
}
}
Resultado del Ejemplo:
Car Object {
Name: Dodge
Number of doors: 2
Year manufactured: Wed Aug 29 15:49:10 ADT 2007
Color: Fuchsia
Options: [Air Conditioning]
}
Esta es una implementación de toString() de Apache Commons para inspeccionar tanto los valores de los atributos como los nombres de estos y generar dinámicamente mediante reflection el String deseado.
Por Ejemplo:
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
Bueno si te quedaron dudas, deja tus comentarios...
Saludos!
No hay comentarios:
Publicar un comentario