Colecciones

Hola, estoy desarrollando una aplicación en java y soy novato en esto todavía. Estoy teniendo problemas para manejar colecciones. Necesito guardar objetos de distintas clases en una colección y recuperarlos para aplicarles un método (que en todas las clases se llama igual). Es decir, tengo los objetos A, B, C, DE de distintas clases y todos tienen el método proc(), lo que necesito hacer es ponerlos dentro de una colección y luego recuperarlos para aplicarles el método proc(). Con la HasTable intente hacerlo pero no puedo recuperarlos, cuando les quiero aplicar el método me dice que no es un método válido de la clase Object.
Desde ya muchas gracias.

1 Respuesta

Respuesta
1
Claro
Como sabes, o deberías, todos los objetos tienen como base la clase Object, de la que heredan por defecto el resto, que a su vez pueden heredar otras, etc, etc.
La forma más fácil de hacerlo es declararte una interface de este estilo:
public interface I{
void proc();
}
Y luego, añadir un implements a las clases A, B, C y DE, así tus clases serán del tipo Object, del tipo A y del I a la vez.
Entonces haces un cast cuando obtengas el objeto de la colección:
I a = (I)colección.get(0);
a.proc();
I b = (I)colección.get(1);
Luego, hay colecciones genéricas, que en vez de permitir añadir toda clase de objetos, se limitan a algo como esto (esto es java 1.5):
Collection<I> colection = new Vector<I>();
Y así, al añadir, solo puedes añadir objetos I, y al coger, te devuelven tipos I.
Sino puedes cambiar A, B, C y DE, me vuelves a preguntar y te explico como hacerlo por reflexión.
O a las malas:
if (objeto instanceof A)
((A)objeto).proc();
else if (objeto.instanceof B)
((B)objeto).proc();
else if ......

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas