次のように:
public object invokemethod(string classname、string methodname、object [] args)slows exception {class ownerclass = class.forname(classname); object offern = ownerclass.newinstance(); class [] argsclass = new class [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;
Webコンテナ内のリクエストオブジェクトをパラメーターとして直接扱い、上記のコードスニペットに渡すと、問題が発生します。この時点で、私たちの取り扱い方法はこのようなものです。動作中、この方法は一般に次のようなものです。
public ActionForwardクエリ(ActionMappingマッピング、ActionFormフォーム、
httpservletrequestリクエスト、httpservletResponse応答)
応答は通常4番目のものにありますので、上記のコードを変更しましょう。
バンドル
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をもっとサポートできることを願っています。