следующее:
public Object InvokeMethod (String ClassName, String Methodname, Object [] args) Throws Exception {class ownerclass = class.forname (classname); object antuction = ownerclass.newinstance (); Class [] argsclass = новый класс [args.length]; for (int i = 0, j = args.length; i <j; i ++) {argsclass [i] = args [i] .getClass (); } Method method = ownerclass.getMethod (MethodName, argsClass); return Method.invoke (владелец, args);}Однако в нашем фактическом приложении мы также столкнемся с ситуацией, когда входящие фактические параметры и формальные параметры метода, который следует назвать, не могут быть полностью согласованными:
Например, когда называется метод в struts1.x, он будет иметь параметры типа httpservletresponse.
В Tomcat экземпляр объекта запроса на самом деле: org.apache.catalina.connector.responsefacade
Он реализует интерфейс: javax.servlet.http.httpservletresponse;
Если мы напрямую рассматриваем объект запроса в веб -контейнере как параметр и передаем его в приведенный выше фрагмент кода, возникнет проблема. В настоящее время наш метод обработки такой. В действии метод обычно похож на:
Общественный запрос ActionForward (картирование действий, форма действия, форма действия,
Httpservlectrequest, httpservletresponse response)
Ответ обычно находится в четвертом, поэтому давайте изменим приведенный выше код:
Пучок
for (int i = 0, j = args.length; i <j; i ++) {argsclass [i] = args [i] .getClass (); }Изменить на:
for (int i = 0, j = args.length; i <j; i ++) {if (i == 3) {argsclass [i] = httpservletresponse.class; } else {argsclass [i] = args [i] .getClass (); }}Приведенное выше резюме (рекомендуется) динамического вызова определенного метода с помощью механизма отражения Java - это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.