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

Pasar una clase como parámetro

Estas en el tema de Pasar una clase como parámetro en el foro de Java en Foros del Web. Hola a todos, espero que me puedan ayudar. Tengo una clase que recibe como parámetro una clase (Class Clase) porque necesito hacer Clase.NewInstance(). El problema ...
  #1 (permalink)  
Antiguo 11/09/2006, 16:41
 
Fecha de Ingreso: agosto-2006
Mensajes: 30
Antigüedad: 18 años, 3 meses
Puntos: 0
Pasar una clase como parámetro

Hola a todos, espero que me puedan ayudar.
Tengo una clase que recibe como parámetro una clase (Class Clase) porque necesito hacer Clase.NewInstance(). El problema lo tengo al pasar dicho parámetro desde un metodo, ej. MiClase(UnaClase.getClass()) y me devuelve error porque .getClass() es de tipo Objeto. Entonces ¿cómo puedo pasar un parametro del tipo Class (no Objeto) para poder utilizar sus metodos desde mi clase?

Saludos y gracias,

David Ortiz.
  #2 (permalink)  
Antiguo 12/09/2006, 00:20
 
Fecha de Ingreso: noviembre-2005
Mensajes: 97
Antigüedad: 19 años
Puntos: 0
Yo creo que para pasar la clase tienes que hacer:

Miclase.class

en vez de Miclase.getClass().



De todas formas, yo le pasaría el nombre de la clase en formato String a ese método, y luego cargaría la clase. Ej:

Código PHP:
public void cargarClase(String clase){
     
Object instancia = Class.forName(clase).newInstance();
   ...

  #3 (permalink)  
Antiguo 12/09/2006, 04:21
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
getClass() no devuelve un "Objeto" simplemente, devuelve un objeto de la clase Class, asi que ese no puede ser el problema. Miralo tu mismo:

http://java.sun.com/j2se/1.3/docs/ap...html#getClass()
http://java.sun.com/j2se/1.4.2/docs/...html#getClass()
http://java.sun.com/j2se/1.5.0/docs/...html#getClass()
  #4 (permalink)  
Antiguo 12/09/2006, 13:48
 
Fecha de Ingreso: agosto-2006
Mensajes: 30
Antigüedad: 18 años, 3 meses
Puntos: 0
Pasar una clase como parámetro

Muy bien, gracias por su ayuda, ya me funcionó lo del .getClass()
Ahora tengo un problema de 'casting' al hacer la conversión de Object a MiClase, me lanza el siguiente mensaej de error:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: [LObjetos.MiClase;

Cuando hago lo siguiente:
Object ElObjeto = UnaClase.UnMetodo(MiClase.getClass());
//Aquí genera el error
MiClase LaClase = (MiClase) ElObjeto;

¿Qué otra forma puedo tomar para convertir un Object en un tipo MiClase?

Saludos.
  #5 (permalink)  
Antiguo 13/09/2006, 00:09
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Sin saber lo que hace el metodo "UnaClase.UnMetodo", poco podemos adivinar sobre el problema. De todas formas.... [LObjetos.MiClase parece indicar un array de objetos de tipo MiClase, en vez de una instancia, asi que puede que el metodo devuelva un array en vez de una instancia simple.
  #6 (permalink)  
Antiguo 13/09/2006, 08:15
 
Fecha de Ingreso: agosto-2006
Mensajes: 30
Antigüedad: 18 años, 3 meses
Puntos: 0
Pasar una clase como parámetro

Exacto!
Ya quedó resuelto. En efecto el metodo devuelve un array por lo tanto la siguiente linea resuelve el error.

Object[] ElObjeto = UnaClase.UnMetodo(MiClase.getClass());
MiClase LaClase = (MiClase) ElObjeto[0];

Gracias.
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:30.