JavaRush /Blog Java /Random-ES /Diez consejos para anular el método toString() en Java (P...
Ku6ep
Nivel 35

Diez consejos para anular el método toString() en Java (Parte 1)

Publicado en el grupo Random-ES
Diez consejos para anular el método toString() en Java - ToStringBuilder Netbeans Eclipse Diez consejos para anular el método toString() en Java (Parte 1) - 1

Método Java toString

toStringEl 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 toStringpuede ayudar a registrar y depurar un programa Java al proporcionar información valiosa e importante. Dado toString()que está definido en java.lang.Objectuna 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. TradeEmployeetoStringtoStringpackage.class@hashCodetoString()toString()CountrySocketServerSockettoStringtoStringtoString

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 Java toString. toString()La clase normal java.util.Dateno 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 Datey 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 Dateen Java. También puede utilizar la clase SimpleDataFormat o la biblioteca de hora Joda Date para esto.

Documentar el formato toString

Si su método toString()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étodo toString()en Java, utilice StringBuilder para agregar atributos individuales. Si está utilizando un IDE como Eclipse , Netbeans o IntelliJ, entonces usar StringBuilderel método and append()en lugar del operador + para componer toStringtambién es el camino a seguir. De forma predeterminada, tanto Eclipse como Netbeans generan toStringcon el operador de concatenación.

Usando la anotación @Override

Usar @Overridela 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étodo toStringy 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 Collectiondicho ArrayListo HashSet en lugar Arrayde almacenar otros objetos.

Consejos extra

Algunos consejos adicionales sobre la anulación de métodos toStringen Java.
  1. Imprima el resultado toStringen varias líneas o en una según su longitud.

  2. Incluya nombres de clases completos en la representación toString, en otras palabras, package.classpara evitar malentendidos.

  3. Puede omitir valores nulos o mostrarlos, pero es mejor mostrarlos. A veces son útiles porque muestran qué campo está presente nulldurante algún incidente, por ejemplo NullPointerException .

  4. Utilice un formato clave-valor, por ejemplo member.name=member.value, la mayoría de los IDE lo admiten.

  5. Incluya miembros heredados si cree que deberían proporcionar la información necesaria a la clase heredera.

  6. 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.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION