欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

通過(guò)java反射機(jī)制動(dòng)態(tài)調(diào)用某方法的總結(jié)(推薦)

 更新時(shí)間:2016年07月25日 11:53:20   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇通過(guò)java反射機(jī)制動(dòng)態(tài)調(diào)用某方法的總結(jié)(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

如下:

	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);
	}

但是,我們?cè)趯?shí)際應(yīng)用中,還會(huì)碰到一種情況,傳入的實(shí)參和要被調(diào)用的方法的形參可能不完全一致:

比如,在struts1.x中的某個(gè)方法被調(diào)用時(shí)候,它會(huì)有HttpServletResponse類型的參數(shù),

我們?cè)趖omcat中,request對(duì)象的實(shí)例其實(shí)是:org.apache.catalina.connector.ResponseFacade

它實(shí)現(xiàn)了接口:javax.servlet.http.HttpServletResponse;

如果我們直接把web容器中的request對(duì)象當(dāng)做一個(gè)參數(shù),傳入上面的代碼片段的話, 就有問(wèn)題,這時(shí),我們的處理辦法是這樣的,在action中,方法一般形如:

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

response一般位于第四個(gè),那么我們修改以上的代碼:


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();  
     }
      
    } 

以上這篇通過(guò)java反射機(jī)制動(dòng)態(tài)調(diào)用某方法的總結(jié)(推薦)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決idea中java出現(xiàn)無(wú)效的源發(fā)行版問(wèn)題

    解決idea中java出現(xiàn)無(wú)效的源發(fā)行版問(wèn)題

    這篇文章主要給大家介紹了關(guān)于解決idea中java出現(xiàn)無(wú)效的源發(fā)行版問(wèn)題的相關(guān)資料,無(wú)效的源發(fā)行版是指IntelliJ IDEA無(wú)法正確識(shí)別和處理的源代碼版本,這可能是由于錯(cuò)誤的配置、缺少依賴項(xiàng)、不兼容的插件或其他問(wèn)題導(dǎo)致的,需要的朋友可以參考下
    2024-01-01
  • Java注解之Elasticsearch的案例詳解

    Java注解之Elasticsearch的案例詳解

    學(xué)會(huì)了技術(shù)就要使用,否則很容易忘記,因?yàn)樽匀唤鐗焊筒淮嬖谑裁创a、變量之類的玩意,這都是一些和生活常識(shí)格格不入的東西。這篇文章主要介紹了Java中Elasticsearch的案例,感興趣的可以了解一下
    2022-10-10
  • Java編寫(xiě)實(shí)現(xiàn)九宮格應(yīng)用

    Java編寫(xiě)實(shí)現(xiàn)九宮格應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了Java編寫(xiě)實(shí)現(xiàn)九宮格應(yīng)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Java自定義簡(jiǎn)單標(biāo)簽實(shí)例

    Java自定義簡(jiǎn)單標(biāo)簽實(shí)例

    Java自定義簡(jiǎn)單標(biāo)簽可以方便的在頁(yè)面輸出信息,并且對(duì)于權(quán)限的控制,和對(duì)于Jsp標(biāo)簽和servlet代碼的分離有著很好的作用
    2013-07-07
  • 一篇文章帶你了解Maven的生命周期

    一篇文章帶你了解Maven的生命周期

    這篇文章主要為大家介紹了Maven的生命周期?,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Java利用opencv實(shí)現(xiàn)用字符展示視頻或圖片的方法

    Java利用opencv實(shí)現(xiàn)用字符展示視頻或圖片的方法

    這篇文章主要介紹了Java利用opencv實(shí)現(xiàn)用字符展示視頻或圖片的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java中的Redis是什么意思

    Java中的Redis是什么意思

    Redis是一個(gè)非常強(qiáng)大的工具,它可以用來(lái)實(shí)現(xiàn)很多有趣的應(yīng)用,還可以使用Redis來(lái)實(shí)現(xiàn)分布式鎖,這樣你就可以在多線程或多進(jìn)程的環(huán)境下同步代碼,這篇文章主要介紹了Java中的Redis是什么意思,需要的朋友可以參考下
    2023-08-08
  • Java動(dòng)態(tài)腳本Groovy

    Java動(dòng)態(tài)腳本Groovy

    本文介紹了Java動(dòng)態(tài)腳本Groovy,Groovy是用于Java虛擬機(jī)的一種敏捷的動(dòng)態(tài)語(yǔ)言,它是一種成熟的面向?qū)ο缶幊陶Z(yǔ)言,既可以用于面向?qū)ο缶幊蹋挚梢杂米骷兇獾哪_本語(yǔ)言。使用該種語(yǔ)言不必編寫(xiě)過(guò)多的代碼,同時(shí)又具有閉包和動(dòng)態(tài)語(yǔ)言中的其他特性,需要的朋友可以參考一下
    2021-12-12
  • JAVA基礎(chǔ)快速?gòu)娜腴T(mén)到精通

    JAVA基礎(chǔ)快速?gòu)娜腴T(mén)到精通

    Java是一門(mén)面向?qū)ο蟮木幊陶Z(yǔ)言,不僅吸收了C++語(yǔ)言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語(yǔ)言具有功能強(qiáng)大和簡(jiǎn)單易用兩個(gè)特征
    2022-03-03
  • Java如何替換jar中的class文件

    Java如何替換jar中的class文件

    在調(diào)整java代碼過(guò)程中會(huì)遇到需要改jar包中的class文件的情況,改了如何替換呢?下面小編給大家分享java替換jar中的class文件的操作方法,感興趣的朋友跟隨小編一起看看吧
    2024-02-02

最新評(píng)論