Foros del Web » Programación para mayores de 30 ;) » Java »

sobreescribir metodo equal, java

Estas en el tema de sobreescribir metodo equal, java en el foro de Java en Foros del Web. hola una consulta, tengo un codigo, donde dice esto ... existe una clase Persona, que es una clase padre, habra otros objetos que la heredaran... ...
  #1 (permalink)  
Antiguo 12/11/2013, 08:55
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 2 meses
Puntos: 3
sobreescribir metodo equal, java

hola una consulta, tengo un codigo, donde dice esto ...

existe una clase Persona, que es una clase padre, habra otros objetos que la heredaran...
se supone que sobreescribire este metodo equals. para saber si el objeto es una instancia de la clase PERSONA, calculo que eso es lo que sucede...

en la linea que dice esto , que es lo que sucede.

Persona tmpPersona = (Persona) obj;

hago una conversion de tipo de dato...??

es como pasar un tipo de dato a otro... si mal no recuerdo de esa manera se hacia en java.

despues compara nombre, apellido, edad....que los datos de la instancia SEAN iguales a los de persona, ya que estos datos pertenecera a la clase padre, estas propiedades. se heredaran y es seguro que sean iguales...




---------------------




Código Java:
Ver original
  1. public boolean equals (Object obj) {
  2.  
  3.         if (obj instanceof Persona) {
  4.  
  5.         Persona tmpPersona = (Persona) obj;
  6.  
  7.             if (this.nombre.equals(tmpPersona.nombre) && this.apellidos.equals(tmpPersona.apellidos) &&
  8.  
  9.  this.edad == tmpPersona.edad) { return true; } else { return false; }
  10.  
  11.     } else { return false; }
  12. } //Cierre del método equals


--EDITADO

viendo el ejemplo lei que dice esto... respecto a esta linea

Persona tmpPersona = (Persona) obj;


creamos una variable de tipo Persona a la que asignamos el objeto pasado como parámetro valiéndonos de casting (enmascaramiento). Esta variable la creamos para poder invocar campos y métodos de la clase Persona, ya que esto no podemos hacerlo sobre un objeto de tipo Object. Con esta variable, realizamos las comparaciones oportunas y devolvemos un resultado.


el "obj" que se recibio como parametro...
no se le pueden llamar sus metodos...??

dice de crear una nueva variable de tipo persona.. pero si creo una nueva, como comparo despues si estos datos de la variable nueva, estaran vacios...


a lo sumo no creo una , si no que la convirtio al tipo de variable de la clase . PERSONA... (que se supone que ya es de tipo persona)

pero bueno dice, que se hace eso para poder acceder a sus propiedades interneas, asi que ustedes. ven que esta bien.....
--------------------

Última edición por aldo_rengo; 12/11/2013 a las 09:16
  #2 (permalink)  
Antiguo 12/11/2013, 11:48
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: sobreescribir metodo equal, java

en este ejemplo que te pongo supongo q prop1 es un objeto o wrapper (p.ej un String) y prop2 es un tipo primitivo (boolean,int..), y el resto de propiedades está representado por los puntos suspensivos.

public boolean equals (Object obj) {
if (obj == null || this.getClass() != obj.getClass()) {
return false; // Sabemos que no es lo mismo
} else {
// Haces el cast
boolean result == this.prop1.equals(obj.prop1) && this.prop2 == obj.prop2 && .. ; // compruebas sus otras propiedades en conjunto
return result;
}
}
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 12/11/2013, 13:45
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 2 meses
Puntos: 3
Respuesta: sobreescribir metodo equal, java

disculpa me re perdi cuando diijiste esto..


"es un objeto o wrapper (p.ej un String)"


es un objeto O?
wrapper?
  #4 (permalink)  
Antiguo 13/11/2013, 02:12
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: sobreescribir metodo equal, java

En realidad el wrapper es un objeto, pero envuelve a un tipo primitivo

El wrapper de un int es Integer.
El wrapper de un short es Short.
El wrapper de un long es Long.
El wrapper de un boolean es Boolean.
... y así.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 13/11/2013, 08:22
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 2 meses
Puntos: 3
Respuesta: sobreescribir metodo equal, java

mmmm

y en esta parte como es el tema ??

Código Java:
Ver original
  1. // Haces el cast
  2. boolean result == this.prop1.equals(obj.prop1) && this.prop2 == obj.prop2 && .. ; // compruebas sus otras propiedades en conjunto
  3. return result;
  4. }


bueno en la comparacion creo que esta mal por que prop1 me decis que es un string..y lo compara con un boolean...

aca compara string...? result que tiene entonces?? se lo definio anteriomente,,??

this.prop1.equals(obj.prop1)

this.prop1 // debe ser el atributo de la clase, para comparar se usa equals . lo comparo con un atributo del objeto que le pase,

*en que momento le hice un CAST?? por que si el objeto es de distinto tipo,
y como se el nombre de la clase? al que quiero pasarla?

tal vez getClass(). pueda ser no?

bueno , el tema es que CAST no veo... en el ejemplo que pusiste...

y prop2 debe ser tipo entero o booleano...

------------------------

pero bueno esa linea la veo media rara...

Etiquetas: clase, metodo, sobreescribir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:58.