Problemas con "downcasting"
Publicado por Fran (34 intervenciones) el 02/05/2001 20:49:26
Saludos, Recientemente he estado desarrollando una aplicación y me ha surgido el problema que paso a detallar.
En primer lugar, creo una clase
class Elemento {
int posx, posy;
String id;
}
Ahora creo unas subclases de esta
class Primero extends Elemento {
int posx, posy;
String id;
Elemento (int posx, int posy) {
this.posx = posx;
this.posy = posy;
}
}
class Segundo....
En un parte del programa voy introduciendo objetos de las diferentes subclases en una lista enlazada. Como sabemos al sacar un elemento de la lista tendremos un objeto, por tanto hago lo siguiente
ListIterator f = l.listIterator(); // l es la lista enlazada
Object o = new Object();
Elemento elto = new Elementto();
while (f.hasNext()) {
o = f.next(); // Tipo Objeto
elto = (Elemento)o; // Tipo Elemento
.....
Como se observa la variable elto debe contener un objeto del tipo Elemento. Lo que sucede es que analizando cualquiera de las variables de Elemento tienen valor 0 (las de tipo entero) ó null (la String). Analizando el programa con el debugger y pidiendo el valor de elto (el objeto) parece que está todo bien, se visualizan todos los valores que he insertado en el programa de forma correcta, pero si lo pido de forma individualizada, por ejemplo elto.posx el valor es cero.
Cualquier ayuda para resolver el problema sería de agradecer. (Perdón si me he extendido un poco)
En primer lugar, creo una clase
class Elemento {
int posx, posy;
String id;
}
Ahora creo unas subclases de esta
class Primero extends Elemento {
int posx, posy;
String id;
Elemento (int posx, int posy) {
this.posx = posx;
this.posy = posy;
}
}
class Segundo....
En un parte del programa voy introduciendo objetos de las diferentes subclases en una lista enlazada. Como sabemos al sacar un elemento de la lista tendremos un objeto, por tanto hago lo siguiente
ListIterator f = l.listIterator(); // l es la lista enlazada
Object o = new Object();
Elemento elto = new Elementto();
while (f.hasNext()) {
o = f.next(); // Tipo Objeto
elto = (Elemento)o; // Tipo Elemento
.....
Como se observa la variable elto debe contener un objeto del tipo Elemento. Lo que sucede es que analizando cualquiera de las variables de Elemento tienen valor 0 (las de tipo entero) ó null (la String). Analizando el programa con el debugger y pidiendo el valor de elto (el objeto) parece que está todo bien, se visualizan todos los valores que he insertado en el programa de forma correcta, pero si lo pido de forma individualizada, por ejemplo elto.posx el valor es cero.
Cualquier ayuda para resolver el problema sería de agradecer. (Perdón si me he extendido un poco)
Valora esta pregunta


0