Java - Method.invoke

 
Vista:

Method.invoke

Publicado por Eduardo (29 intervenciones) el 11/05/2006 13:06:34
Hola a todos:

Tengo un problema al ejecutar una instruccion en una clase.
El problema es que llamo y abro una clase llamandola desde Class.formname("");, debido a que el nombre de la clase que quiero abrir esta en un campo de la base de datos.
La clase se me abre y se muestra, pero el problema lo tengo cuando quiero abrir un metodo de esta clase, el codigo es el siguiente:

//Con esto muestro la pantalla de la clase cuyo nombre esta en vsPro
Class clase = Class.forName( vsPro );
clase.newInstance();

//con estas lineas yamo al metodo metodo de la clase
Method metodo = clase.getMethod("metodo",new Class[] {});
metodo.invoke(clase, new Object[0]);

Pero me da el siguiente error:

java.lang.IllegalArgumentException: object is not an instance of declaring class

Parece que en la linea de metodo.invoke, no reconoce clase como una clase declarada.

Y en cambio si ponemos System.out.println(metodo);
antes del invoke, nos muestra public void pcr.gEmpresa.metodo()

Muchas gracias por vuestra atencion.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Method.invoke

Publicado por manru (161 intervenciones) el 11/05/2006 14:30:32
Hola Eduardo...

Esta bien pero te falta un paso...
Fijate..

//Con esto muestro la pantalla de la clase cuyo nombre esta en vsPro
Class clase = Class.forName( vsPro );
Object obj = clase.newInstance();

//con estas lineas yamo al metodo metodo de la clase
Method metodo = clase.getMethod("metodo",new Class[] {});
metodo.invoke(obj, new Object[0]);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar