como sigue:
Public Object Invokemethod (String ClassName, String MethodName, Object [] args) lanza la excepción {class d augeClass = class.forname (className); Object propietario = propietarioclass.newinstance (); Clase [] argsclass = nueva clase [args.length]; para (int i = 0, j = args.length; i <j; i ++) {argsclass [i] = args [i] .getClass (); } Método método = propietarioClass.getMethod (MethodName, ArgsClass); return Method.invoke (propietario, args);}Sin embargo, en nuestra aplicación real, también encontraremos una situación en la que los parámetros reales entrantes y los parámetros formales del método a llamar pueden no ser completamente consistentes:
Por ejemplo, cuando se llama un método en Struts1.x, tendrá parámetros de tipo httpservletResponse.
En TomCat, la instancia del objeto de solicitud es en realidad: org.apache.catalina.connector.ResponseFacade
Implementa la interfaz: javax.servlet.http.httpservletResponse;
Si tratamos directamente el objeto de solicitud en el contenedor web como un parámetro y lo pasamos al fragmento de código anterior, habrá un problema. En este momento, nuestro método de manejo es así. En acción, el método es generalmente como:
Public ActionForward Query (ActionMapping Mapping, ActionForm Form,
Solicitud httpservletRequest, respuesta httpservletreSponse)
La respuesta generalmente se encuentra en la cuarta, así que modificemos el código anterior:
Manojo
para (int i = 0, j = args.length; i <j; i ++) {argsclass [i] = args [i] .getClass (); }Cambio a:
for (int i = 0, j = args.length; i <j; i ++) {if (i == 3) {argsclass [i] = httpservletResponse.class; } else {argsclass [i] = args [i] .getClass (); }}El resumen anterior (recomendado) de llamar dinámicamente un cierto método a través del mecanismo de reflexión de Java es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.