Casi correcto, excepto en la situación en que su clase extiende otra clase. Cuando llama a toString () en una instancia de su clase, y su clase no tiene una, verificará la superclase y así volverá a Object. Si la superclase (o su superclase, etc.) tiene un método toString (), se llamará, no el que está en Object. Eso podría hacer algo diferente de lo que espera, y lo que es más, alguien puede tener un código escrito que depende de su método toString ().
Por ejemplo:
Clase Animal extiende Objeto
Class Dog extiende Animal – supongamos que esta es la clase que has escrito
Quien escribió Animal puede haber hecho que muestre su ID de base de datos como el método toString (). Y alguien que sabía esto puede tener código como:
- Quiero regalar un teléfono inteligente a mi padre menor de 15000. ¿Cuál es el mejor recientemente?
- Soy un estudiante de cuarto año de B.Arch. ¿Cómo puedo obtener una beca para mi maestría en ingeniería estructural en los Estados Unidos?
- Tomo camisetas deportivas viejas y las convierto en lindos vestidos. Quiero comenzar a cobrar por esto, pero ¿cómo puedo solucionar los problemas de marca registrada? ¿Y es legal o no?
- He visto la película American Psycho. Lo que me confunde es “¿Qué pasó con el cadáver que tenía en un piso / habitación cercano”?
- Quiero hacer cima ¿Cuáles son las oportunidades y en qué país la profesión de cima es más valiosa, ahora estoy haciendo cma final, ¿cómo me sugieres?
Animal critter = getAnimal ();
String critterId = critter.toString ();
Dado que cualquier instancia de Dog también es una instancia de Animal, si getAnimal () devuelve un Dog, rompería este código si anula aString () .
Esto trae dos puntos de mejores prácticas:
- es una mala idea depender de toString () que produce cualquier formato particular de salida
- si solo desea obtener una versión en cadena de un objeto para la depuración, es más seguro escribir todas sus clases con algún otro método como toDebugString () para que no se arriesgue a interferir con alguna clase que infringe la regla # 1
Es muy común en Java que la gente anule toString () para la depuración, pero este es mi consejo basado en 16 años de desarrollo comercial de Java.