Método Java toString
toString
El método en Java se utiliza para proporcionar información clara y suficiente sobre un objeto ( Object
) en un formato legible por humanos. La anulación del método adecuado toString
puede ayudar a registrar y depurar un programa Java al proporcionar información valiosa e importante. Dado toString()
que está definido en java.lang.Object
una clase y su implementación predeterminada no proporciona mucha información, siempre es una buena práctica anular este método en una clase descendiente. De hecho, si está creando una clase importante o general de tipo o Order
, siempre anule los métodos iguales , hashCode , compareTo y en Java. De forma predeterminada, la implementación produce una salida en el formulario , por ejemplo, para nuestro ejemplo, el método de clase imprimirá test.Country@18e2b22 donde 18e2b22 es el código hash del objeto en hexadecimal, si llama al método hashCode devolverá 260943370, que es el equivalente decimal de 18e2b22. Esta información no es particularmente útil cuando se busca un problema. Veamos un ejemplo de la vida real donde necesita encontrar un problema en su conexión de red, en el caso de que desee saber a qué host y puerto está intentando conectarse su sistema y si o solo imprime la información predeterminada, será Es imposible imaginar el problema real, pero con una implementación anulada pueden proporcionar información útil como el nombre de host y el número de puerto. En este tutorial de Java daremos algunos consejos sobre la anulación de métodos con ejemplos de código. Trade
Employee
toString
toString
package.class@hashCode
toString()
toString()
Country
Socket
ServerSocket
toString
toString
toString
Cómo anular el método toString en Java:
Imprime la fecha formateada (es decir, día/mes/año) en lugar del valor sin formato. Esta es una sugerencia muy útil a la hora de anular un método JavatoString
. toString()
La clase normal java.util.Date
no genera una fecha formateada e incluye muchos detalles que no siempre son necesarios. Si está utilizando DateFormat parcial , es decir. dd-MM-yy en su aplicación, entonces definitivamente querrá ver este formato en lugar del predeterminado. El IDE generalmente no genera resultados formateados Date
y esto es algo que deberás hacer tú mismo, pero vale la pena. Lea Cómo imprimir la fecha en formato ddMMaa en Java para obtener detalles sobre el formato Date
en Java. También puede utilizar la clase SimpleDataFormat o la biblioteca de hora Joda Date para esto.
Documentar el formato toString
Si su métodotoString()
no genera datos como campo=valor, entonces es una buena idea documentar el formato de salida toString
, especialmente para objetos importantes como Empleado o Estudiante. Por ejemplo, si un método toString()
de clase Работник(Employee)
imprime " John-101-Sales-9846387321 ", entonces una buena práctica sería especificar el formato como "nombre-id-departamento-contacto", pero al mismo tiempo no permitir que el cliente obtenga información del método toString()
, siempre debe proporcionar métodos apropiados para recuperar datos, como getName()
,, getId()
etc. getContact()
, ya que la información obtenida de toString()
la representación del objeto es frágil y propensa a errores, por lo que el cliente siempre debe tener una ruta limpia para obtener la información.
Utilice StringBuilder para componer la salida de toString()
Si está escribiendo código para un métodotoString()
en Java, utilice StringBuilder para agregar atributos individuales. Si está utilizando un IDE como Eclipse , Netbeans o IntelliJ, entonces usar StringBuilder
el método and append()
en lugar del operador + para componer toString
también es el camino a seguir. De forma predeterminada, tanto Eclipse como Netbeans generan toString
con el operador de concatenación.
Usando la anotación @Override
Usar@Override
la anulación de métodos en Java es una de las mejores prácticas en el lenguaje. Pero esta sugerencia no es tan importante como lo sería en el caso de anular los métodos equals()
y compareTo()
, ya que sobrecargar en lugar de anular puede crear errores más sutiles que son difíciles de calcular. En cualquier caso, es mejor utilizar la anotación @Overrride
.
Imprimir el contenido de una matriz en lugar de imprimir el objeto de la matriz
Una matriz es un objeto en Java pero no anula un métodotoString
y cuando se imprime una matriz, el formato de salida predeterminado no es muy útil ya que nos gustaría ver el contenido de la matriz. Por cierto, esta es otra razón por la que la matriz char[] es preferible a String para almacenar datos confidenciales como una contraseña. Tómese el tiempo para ver si imprimir el contenido de una matriz ayuda a sus clientes o no, y si tiene sentido, imprima el contenido de la matriz en lugar del objeto en sí. Por razones de rendimiento, es preferible utilizar Collection
dicho ArrayList
o HashSet en lugar Array
de almacenar otros objetos.
Consejos extra
Algunos consejos adicionales sobre la anulación de métodostoString
en Java.
-
Imprima el resultado
toString
en varias líneas o en una según su longitud. -
Incluya nombres de clases completos en la representación
toString
, en otras palabras,package.class
para evitar malentendidos. -
Puede omitir valores nulos o mostrarlos, pero es mejor mostrarlos. A veces son útiles porque muestran qué campo está presente
null
durante algún incidente, por ejemplo NullPointerException . -
Utilice un formato clave-valor, por ejemplo
member.name=member.value
, la mayoría de los IDE lo admiten. -
Incluya miembros heredados si cree que deberían proporcionar la información necesaria a la clase heredera.
-
A veces un objeto contiene muchos parámetros opcionales y obligatorios, como mostramos en nuestro ejemplo de plantilla Builder , cuando es casi imposible imprimir todos los campos, en este caso podemos imprimir solo los campos obligatorios, especialmente porque tenemos opcionales.
GO TO FULL VERSION