String.toString() Java

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:

@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 en la entrada