Listado completo de tutoriales
98 - Generación automático de los métodos toString y equals con Eclipse |
Vimos en conceptos anteriores que generalmente sobreescribimos los métodos toString y equals heredados de la clase Object.
Al ser una actividad tan común los Ide (Integrated Development Enviroment) de Java (Eclipse, NetBeans, IntelliJ IDEA etc.) nos brindan estas funcionalidades en forma automática.
Plantear un clase llamada 'Persona' definir los atributos nombre y edad. Crear el constructor y los métodos para modificar y recuperar los valores de los atributos, además implementar los métodos toString y equals mediante las herramientas que provee Eclipse.
En la opción 'source' de Eclipse debemos seleccionar:
Cuando elegimos generar 'toString' podemos hacer algunas configuraciones:
Cuando generamos el método 'equals' también se genera el método 'hashCode':
En el diálogo podemos seleccionar que campos intervienen en el método 'equals'.
El método hashCode es importante para un manejo eficiente de colecciones de la clase Persona, por ejemplo ArrayList, LinkedList, HashSet, HashMap etc. Si dejamos por defecto el método hashCode heredado de la clase Object nuestro programa no será tan eficiente trabajando con estas colecciones.
public class Persona { private String nombre; private int edad; public Persona(String nombre, int edad) { super(); this.nombre = nombre; this.edad = edad; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public int getEdad() { return edad; } public void setEdad(int edad) { this.edad = edad; } @Override public String toString() { return "Persona [nombre=" + nombre + ", edad=" + edad + "]"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + edad; result = prime * result + ((nombre == null) ? 0 : nombre.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Persona other = (Persona) obj; if (edad != other.edad) return false; if (nombre == null) { if (other.nombre != null) return false; } else if (!nombre.equals(other.nombre)) return false; return true; } }
public class Cuadrado { private int lado; public Cuadrado(int lado) { super(); this.lado = lado; } public int getLado() { return lado; } public void setLado(int lado) { this.lado = lado; } @Override public String toString() { return "Cuadrado [lado=" + lado + "]"; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + lado; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Cuadrado other = (Cuadrado) obj; if (lado != other.lado) return false; return true; } }