A ver si ahora si me contestan!!!!

mey
23 de Agosto del 2004
Tengo un vector de n objetos q despliego en un como, depende del objeto seleccionado llamo a un funcion.
Ahora, como lo harían para no escribir n ifs?

Saludos,!!! (aunq no me contesten)

MEY

maramonar
23 de Agosto del 2004
Podrías definir una interface que defina un método. Que los n objetos implementen esa interface y dentro de ese método común cada uno haga su propia lógica..

mey
23 de Agosto del 2004
Hola maramonar !!!!
Me declaro ignorante en el tema. Es decir, no entiendo la solución q propones :( Voy a buscar en el sitio de sun para investigar....
Podrías tu recomendarme algo para ponerme a estudiar del tema???

Saludos y gracias por contestar..... :)

maramonar
23 de Agosto del 2004
No es nada complicado lo que te propongo, aunque tampo se si se puede aplicar a tu caso..
La ideas es que vos tenes n clases distintas (Clase1..Clasen) y lo que no queres hacer es:
.....
if (class instaceOf Clase1) {
Clase1 clase1 = (Clase1) class;
clase1.metodo1();
} else if (......)
....
} else if(class instaceOf ClaseN {
ClaseN claseN = (ClaseN) class;
claseN.metodoN();
}
Lo que te propongo es que definas una interface con un método
public interfaz IClaseComun {
public void metodoComun();
}
y entoces que todas las clases implementen esa interfaz.
public class Clase1 implements IClaseComun {
public void metodoComun() {
this.metodo1();
}
public void metodo1() {
.........
}
}
Entonces el código que tiene que trabajar con las n clases puede manejarse a nivel de interfaz;
IClaseComum class = ....;
class.metodoComun();

mey
23 de Agosto del 2004
Voy a realizar una prueba a ver si así me es más fácil visualizar la solución.

Otra vez.. Muchisisisisimas Gracias por contestar :)
Saludos, MEY!!!!!!!

Fran
23 de Agosto del 2004
Más vale tarde que nunca.

La solución que te proponen de la interfaz es buena, sólo tendrías que hacer:

for (int i=0; i<arreglo.length(); i++)
{
arreglo[i].laFuncionQueTeTraeLoca(Parametros);
}

Pero si los objetos están relacionados es más elegante que hereden de una clase base común. El código de llamada a la función sería el mismo, pero usarías el polimorfismo de los objetos.

Espero que te sirva, Fran.

maramonar
23 de Agosto del 2004
arrjjjj......varias animaladas....
es instanceof en lugar de instanceOf
es interface en lugar de interfaz..

mey
23 de Agosto del 2004
Apenas empeze y ya no se como hacerlo....
A ver....
1. Yo tengo las opciones en un combo box
2. Tengo una clase con todos los métodos.
3. No quiero usar:
Metodos m = new Metodos();
if(combo.getselection().equals("usar metodo 1"))
m.metodo1(datos);
else if(...metodo2)
m.metodo2(datos2);

Segun tu ejemplo, como hago para q las opciones del combo implementen mi clase Metodos q voy a cambiar a interfaz...?

Viendolo de otra manera, yo obtengo una selección del combo, como tengo mas datos, esta seleccion esta almacenada en un arreglo de objetos. Como puedo ejecutar un método de otra clase a partir del contenido de arreglo[2] ?

Me estoy complicando mucho??? será mejor utilizar los n ifs????

Ah! Abusando de tu disponibilidad... Has tratado de actualizar los datos en la BD con el ResultSet utilizando métodos updatexxx y resultset.updaterow(); ? Tengo problemas con esto tambien....

cris
23 de Agosto del 2004
podrias utilizar switch:
switch (x){
case 0: //un metodo; break;
case 1: //otro metodo; break;
...
donde x es una variable que seria el equivalente a preguntar if(x==...)

¿se entiende?
Suerte