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

Serializar Clase hija de un HashMap

Estas en el tema de Serializar Clase hija de un HashMap en el foro de Java en Foros del Web. Buenas, Por ejemplo, tengo un HashMap de Persona con dos clases hijas Alumno y Profesor. Una vez cargado una de las personas para recuperar variables ...
  #1 (permalink)  
Antiguo 20/01/2012, 13:09
Avatar de klmnt  
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 12 años, 1 mes
Puntos: 1
Pregunta Serializar Clase hija de un HashMap

Buenas,

Por ejemplo, tengo un HashMap de Persona con dos clases hijas Alumno y Profesor.

Una vez cargado una de las personas para recuperar variables que tienen en común no hay problema:

Código:
stringAux = obPersona.getNombre()
Pero, ¿qué he de hacer para recuperar datos que sólo tiene Alumno? En Pascal sería algo así como obPersona.Alumno.Nota[i] pero en Java.. =S

Gracias!
  #2 (permalink)  
Antiguo 20/01/2012, 14:27
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 10 años, 8 meses
Puntos: 306
Respuesta: Serializar Clase hija de un HashMap

Aunque el hashmap sea de Persona, el objeto sigue guardando en memoria lo que es realmente, por lo que si le haces un cast a su clase correspondiente tendrás disponibles sus métodos.

Para reconocer qué clase tienes que usar en el cast, tienes dos opciones:

1. Crear un método en persona que permita recuperar un identificador de cada clase.
2. Usar getClass()

Código Javascript:
Ver original
  1. for(A n : aList){
  2.            
  3.             if(n.getClass().equals(A.class)){
  4.                 System.out.println("1");
  5.             }else if (n.getClass().equals(B.class)){
  6.                 System.out.println(((B)n).getB());
  7.             }else if (n.getClass().equals(C.class)){
  8.                 System.out.println(((C)n).getC());
  9.             }
  10.         }
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 20/01/2012, 16:51
Avatar de klmnt  
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Serializar Clase hija de un HashMap

Muchas gracias por la respuesta! Pero.. no sé si no me entero de la solución o creo que eso no es lo que quiero. Lo vuelvo a explicar un poco mejor:

La clase Persona tiene Nombre y Apellidos.

La clase Alumno sería algo así:

Código:
public class Alumno extends Persona implements Serializable {

  private String curso;
  pivate Double notaMedia;

  [...] //aquí iría lo de "super", constructores y demás
}
Entonces, si quiero hacer una ficha del alumno. De la tabla Persona saco todo sin problema tipo:

Código:
stringAux = objPersona.getNombre();
jLabel1.setText(stringAux);

stringAux = objPersona.getApellido();
jLabel2.setText(stringAux);
El problema es para sacar desde "objPersona" que es lo que tiene el HashMap el valor que haya en "curso". Es decir, el código que he puesto en este último cuadro de código (el de stringAux) pero para recoger variables que no tiene la clase padre "Persona" sino la hija "Alumno".

Gracias de antemano!
  #4 (permalink)  
Antiguo 21/01/2012, 06:55
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 10 años, 8 meses
Puntos: 306
Respuesta: Serializar Clase hija de un HashMap

Completando el ejemplo que puse antes

aList = List<A>

A = Persona
B = Alumno
C = Profesor

Es exactamente lo que buscas, prueba lo que te digo.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 21/01/2012, 11:52
Avatar de klmnt  
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Serializar Clase hija de un HashMap

A la noche lo probaré con más tranquilidad para hacer las pruebas correctamente pero ya te digo que al transformarlo con mis clases, crear la aList y demás me lo ha compilado correctamente.

Luego te confirmo. Muchas gracias!!

Etiquetas: clase, hashmap, hija
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 22:23.