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 2)

Publicado en el grupo Random-ES

Ejemplos de toString en Java

Usaremos la siguiente clase para demostrar nuestro ejemplo toString para Netbeans, Eclipse y la utilidad ToStringBuilder de Apache.

/** * Java программа, демонстрирующая Cómo переопределить метод toString() в Java. * Эта Java программа показывает Cómo вы можете использовать IDE типа Netbeans o Eclipse * и открытую библиотеку типа Apache commons ToStringBuilder для * переопределения toString в Java. * @author Javarevisited.blogspot.com */ public class Country { private String name; private String capital; private long population; private Date independenceDay; public Country(String name){ this.name = name; } public String getName(){ return name; } public void setName(String name) {this.name = name;} public String getCapital() {return capital;} public void setCapital(String capital) {this.capital = capital;} public Date getIndependenceDay() {return independenceDay;} public void setIndependenceDay(Date independenceDay) {this.independenceDay = independenceDay;} public long getPopulation() { return population; } public void setPopulation(long population) {this.population = population; } @Override public String toString() { return "Country{" + "capital=" + capital + ", population=" + population + ", independenceDay=" + independenceDay + '}'; } public void setIndependenceDay(String date) { DateFormat format = new SimpleDateFormat("dd/MM/yyyy"); try { this.independenceDay = format.parse(date); } catch (ParseException ex) { Logger.getLogger(Country.class.getName()).log(Level.SEVERE, null, ex); } } public static void main(String args[]) { Country India = new Country("India"); India.setCapital("New Delhi"); India.setIndependenceDay("15/07/1947"); India.setPopulation(1200000000); System.out.println(India); } }

El método toString creado por Netbeans IDE


El método toString generado por Netbeans IDE produce el siguiente resultado para la clase definida anteriormente:

Country{capital=New Delhi, population=1200000000, independenceDay=Fri Aug 15 00:00:00 VET 1947}

Si observa el resultado anterior, verá que Netbeans no está creando la fecha formateada por usted: en su lugar, está llamando al método toString() de la clase java.util.Date.

El método toString() creado por Rclise IDE


De forma predeterminada, Eclipse crea el siguiente método toString:

@Override public String toString() { return "Country [name=" + name + ", capital=" + capital + ", population=" + population + ", independenceDay=" + independenceDay + "]"; }

Puede generar código para el método toString en Eclipse haciendo clic en Fuente --> Generar toString(). También proporciona varias posibilidades, como elegir el estilo del código, es decir, utilizar el operando de concatenación o StringBuilder , etc. A continuación se muestra el resultado del método toString() que acabamos de crear en Eclipse:

Country [name=India, capital=New Delhi, population=1200000000, independenceDay=Tue Jul 15 00:00:00 VET 1947]

Uso de ToStringBuilder para anular el método toString() de Java

Junto con muchas clases útiles como PropertyUtils , EqualsBuilder o HashCodeBuilder, Apache también proporciona ToStringBuilder que puede generar código para generar el método toString() en varios estilos diferentes. Veamos cómo se ve la salida del método toString en un estilo simple y de varias líneas: Estilo simple:

India,New Delhi,1200000000,Fri Aug 15 00:00:00 VET 1947

Estilo multilínea:

test.Country@f0eed6[
 name=India
 capital=New Delhi
 population=1200000000
 independenceDay=Fri Aug 15 00:00:00 VET 1947
 ]

NO_FIELD_NAMES_STYLE (estilo sin nombres de campos)

test.Country@1d05c81[India,New Delhi,1200000000,Fri Aug 15 00:00:00 VET 1947]

SHORT_PREFIX_STYLE (estilo de prefijo corto)

Country[name=India,capital=New Delhi,population=1200000000,independenceDay=Fri Aug 15 00:00:00 VET 1947]

ToStringStyle.DEFAULT_STYLE (estilo predeterminado)

test.Country@1d05c81[name=India,capital=New Delhi,population=1200000000,independenceDay=Fri Aug 15 00:00:00 VET 1947]

Guava , una biblioteca de código abierto similar de Google, también proporciona una API conveniente para generar código para el método toString en Java.

Cuando se llama al método toString en Java

toString es un método bastante específico y se llama desde muchos métodos JavaAPI, como println(), printf() , registro, declaraciones de afirmación , depuradores IDE, al imprimir colecciones y al concatenar. Si una subclase no anula toString(), entonces se llama a la implementación predeterminada definida en la clase Object. Muchos desarrolladores utilizan API de registro como Log4J o java.util.Logger para generar registros y, a menudo, omiten el objeto aquí.

logger.info("Customer not found:" + customer)

y si el Cliente no anula toString y genera información importante como ID de cliente, Nombre de cliente, etc. entonces será bastante difícil diagnosticar el problema. Es por eso que siempre vale la pena anular toString en Java. Echemos un vistazo a algunos de los beneficios si hacemos esto.

Beneficios de anular el método toString

  1. Como se mencionó anteriormente, un toString anulado correctamente ayuda con la depuración al imprimir información importante.
  2. Si un objeto importante está almacenado en una colección, al imprimir la colección se llamará al método toString del objeto almacenado, que puede imprimir la información importante. Un ejemplo clásico de un método toString no anulado es Array en Java, que imprime el resultado de la implementación predeterminada en lugar del contenido de la matriz. Aunque hay varias formas de imprimir el contenido de una matriz usando Arrays.toString() y similares; pero como Array es un objeto Java, sería mucho mejor si supiera cómo imprimirse, al igual que las clases de colección como List o Set .

Estos son solo algunos de los beneficios que obtendrá al implementar o anular el método toString en Java ; hay muchos más beneficios que obtendrá y aprenderá por sí mismo. Espero que estos consejos le ayuden a aprovechar al máximo sus implementaciones de toString. Háganos saber si conoce alguna forma única de trabajar con toString que le ayude en sus aplicaciones Java.

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