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.
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


0