国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

通過java反射機制動態調用某方法的總結(推薦)

2019-11-26 14:01:31
字體:
來源:轉載
供稿:網友

如下:

	public Object invokeMethod(String className, String methodName,			Object[] args) throws Exception{		Class ownerClass = Class.forName(className);			Object owner = 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(owner, args);	}

但是,我們在實際應用中,還會碰到一種情況,傳入的實參和要被調用的方法的形參可能不完全一致:

比如,在struts1.x中的某個方法被調用時候,它會有HttpServletResponse類型的參數,

我們在tomcat中,request對象的實例其實是:org.apache.catalina.connector.ResponseFacade

它實現了接口:javax.servlet.http.HttpServletResponse;

如果我們直接把web容器中的request對象當做一個參數,傳入上面的代碼片段的話, 就有問題,這時,我們的處理辦法是這樣的,在action中,方法一般形如:

public ActionForward query(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)

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反射機制動態調用某方法的總結(推薦)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大冶市| 北票市| 六枝特区| 皋兰县| 湘潭市| 富裕县| 东乡族自治县| 阳西县| 鄂温| 富蕴县| 锦州市| 合山市| 四子王旗| 连江县| 滦平县| 邹城市| 蕉岭县| 威信县| 板桥市| 民县| 鹤峰县| 嵊泗县| 富川| 光泽县| 五莲县| 永州市| 宣汉县| 马龙县| 彭阳县| 沁源县| 兰坪| 当雄县| 桂阳县| 吉木乃县| 西充县| 新乡市| 女性| 西畴县| 咸丰县| 定安县| 林口县|