CodeGym /Blog Java /Random-ES /Método Java toString()
John Squirrels
Nivel 41
San Francisco

Método Java toString()

Publicado en el grupo Random-ES
Muy a menudo, al crear un programa, es necesario averiguar el contenido de un objeto. Para estos propósitos, la clase Java Object , la clase Java más básica en la jerarquía de clases, define un método toString() especial. Devuelve una cadena de caracteres que describe el objeto. La implementación predeterminada del método toString() en Java produce resultados como este:
package.class@hashCode
es decir, toString , que se definió en java.lang.Object , proporciona el código hash del objeto en forma hexadecimal. Esto muchas veces no es muy claro ni útil. Entonces, al crear una nueva clase, es habitual anular toString() para que la cadena de retorno contenga el nombre de la clase, los nombres y los valores de todas las variables. Anular correctamente el método toString puede ayudar a registrar y depurar un programa Java y proporciona información valiosa e importante. En pocas palabras, el método toString() se utiliza en Java para obtener un objeto de cadena que representa el valor de un objeto numérico. En otras palabras, convierte un número en una cadena. Si el método toma un tipo de datos simple como argumento, entonces se devuelve un objeto de cadena que representa el valor del tipo de datos simple.

Ejemplo de método Java toString()

Por lo general, si crea una clase, además del método toString() en Java, necesita anular los métodos equals , hashCode y compareTo para saber cómo trabajar con sus objetos. Pero por ahora, centrémonos en toString . En la mayoría de los casos, enviar información textual sobre un objeto es bastante sencillo. Solo necesita comprender qué le gustaría ver exactamente al usuario al iniciar sesión. Demos un ejemplo y creemos una Clase que describa un punto en el plano. Tiene dos coordenadas: coordenadaX, coordenadaY. Naturalmente, deberían mostrarse en la pantalla si un usuario pregunta "qué objeto es este", al igual que el nombre de la clase misma. Esto es lo que vamos a demostrar en el método toString() anulado . Ahora creamos la clase en sí, sus campos (coordenadas), un constructor, captadores para obtener coordenadas (claro, es posible no crearlos, pero desde el punto de vista del uso correcto de la programación orientada a objetos, los captadores son una buena práctica). Solo para ilustrar, creemos también un método que cree un nuevo punto: la suma de los otros dos, y también anulemos los métodos iguales y hashCode .
public class Point implements Comparable<Point> {
   private final int coordinateX;
   private final int coordinateY;

   public Point(final int coordinateX, final int coordinateY) {
       this.coordinateX = coordinateX;
       this.coordinateY = coordinateY;
   }

   public int getX() {
       return coordinateX;
   }

   public int getY() {
       return coordinateY;
   }

   public Point sum(final Point that) {
       return new Point(coordinateX + that.coordinateX, coordinateY + that.coordinateY);
   }

// here we override toString with coordinates and class name
   @Override
   public String toString() {
       return "Point{"
               + "X: " + getX()
               + ", Y: " + getY()
               +  '}';
   }

   @Override
   public boolean equals(Object o) {
       if (o == this) {
           return true;
       }
       if (o == null || o.getClass() != this.getClass()) {
           return false;
       }

   @Override
   public int hashCode() {
       return coordinateX + coordinateY;

   }
Ahora creemos una clase de prueba y un método principal. Ahí tenemos dos puntos y el tercero, que obtenemos de la suma de dos puntos. Aplicamos el método toString hasta este punto y lo imprimimos.
//toString() method demo
public class Test {
   public static void main(String[] args) {
       Point myPoint1 = new Point(5,7);
       Point myPoint2 = new Point(-2, 8);
       Point mySum = myPoint1.sum(myPoint2);
     //call toString explicitly
       System.out.println(mySum.toString());
   }
}
El resultado del trabajo de este programa se encuentra a continuación:
Punto {X: 3, Y: 15}
En realidad, no es necesario llamar explícitamente al método toString , y la mayoría de las veces no lo hace. Para llamar al método toString() , simplemente pase el objeto deseado a System.out.println . Entonces nuestra clase de prueba se verá así:
//toString method demo
public class Test {
   public static void main(String[] args) {
       Point myPoint1 = new Point(5,7);
       Point myPoint2 = new Point(-2, 8);
       Point mySum = myPoint1.sum(myPoint2);
       //call toString implicitly
       System.out.println(mySum);
   }
}
El resultado del programa es el mismo que antes. ¿Qué pasa si no anulamos el método toString , pero queremos imprimir el objeto? En este caso, se llamará al método toString de la clase Object . En nuestro ejemplo, si eliminamos el método toString de nuestra clase Point y dejamos todo como está en la clase de prueba, obtendremos el siguiente resultado:
Punto@12
Aquí tenemos el código hash del objeto en hexadecimal.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION