Los metodos que proporciona la clase Object son:
- Poder compararse con otro objeto.
- Convertirse en cadena.
- Esperar que pase una condición.
- Notificar que una condición ha cambiado.
- Devolver la clase de un objeto.
by Pedro García Hernández
El método equals(), se utiliza para comparar dos objetos. Ojo no confundir con el operador ==, que ya sabemos que sirve para comparar tambien, equals compara si dos objetos apuntan al mismo objeto.
Equals() se usa para saber si dos objetos son del mismo tipo y tienen los mismos datos. Nos dara el valor true si son iguales y false si no.
Las subclases pueden sobreescribir el método equals() parahacer una comparación entre dos objetos.
En la lista de argumentos del método equals() hay que pasarle un argumento de tipo Object. sino se sobrecarga el método, no se sobreescribe.
El método getClass() es un método final que no puede sobreescribirse que devuelve una representación en tiempo de ejecución de la clase del objeto. Este método devuelve un objeto Class al que se le puede pedir información sobre la clase, como su nombre, el nombre de su superclase y los nombres de los interfaces que implementa.
Este metodo se usa para convertir los objetos a una cadena.
Por ejemplo, se puede extraer el entero contenido en un objeto Integer.
Este método también se puede sobreescribir, o redefinir, para convertir los objetos definidos a cadenas.
// Aqui tenemos dos clases String String uno = new String ("Un texto"); String dos = new String ("Un texto"); if (uno == dos ) {// Esta comparacion siempre // devuelve false ... Esto no se ejecutará } if (uno.equals(dos)) {// Esta comparación // si devuelve true .... Esto si se ejecutará. }
class Punto { int x; int y; // el metodo equals seria : public boolean equals (Object obj) { if (this == obj) { return true; } if (obj instanceof Punto) { Punto otro = (Punto)obj; return ((x==otro.x) && (y==otro.y)) } else { return false; } } }
public int hashCode () { // Multiplicamos por numeros primos int result = 17; result = 37 * result + x; result = 37 * result + y; return result; }