最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

如下:

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

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

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

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

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

如果我們直接把web容器中的request對象當(dāng)做一個參數(shù),傳入上面的代碼片段的話, 就有問題,這時,我們的處理辦法是這樣的,在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反射機(jī)制動態(tài)調(diào)用某方法的總結(jié)(推薦)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談Java并發(fā)中的內(nèi)存模型

    淺談Java并發(fā)中的內(nèi)存模型

    這篇文章主要介紹了Java并發(fā)中的內(nèi)存模型,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • SpringBoot 中的異步處理機(jī)制詳解

    SpringBoot 中的異步處理機(jī)制詳解

    本文介紹了異步處理的基礎(chǔ)配置、線程池的自定義以及常見應(yīng)用場景,在實際應(yīng)用中,異步處理可以有效提升應(yīng)用的性能,改善用戶體驗,但同時也需要我們合理管理線程池,確保系統(tǒng)資源的高效利用,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 啟動 Eclipse 彈出 Failed to load the JNI shared library jvm.dll 錯誤的解決方法

    啟動 Eclipse 彈出 Failed to load the JNI shared library jvm.dll

    這篇文章主要介紹了有時候,新電腦上回碰到打開Eclipse時,彈出提示“Failed to load the JNI shared library jvm.dll”錯誤,這里給大家分享解決方案
    2016-08-08
  • Java編程中實現(xiàn)Condition控制線程通信

    Java編程中實現(xiàn)Condition控制線程通信

    這篇文章主要介紹了Java編程中實現(xiàn)Condition控制線程通信,簡單介紹了Java中控制線程通信的方法,以及對condition的解析和實例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 一文詳解java閉包的用途是什么

    一文詳解java閉包的用途是什么

    閉包的價值在于可以作為函數(shù)對象或者匿名函數(shù),持有上下文數(shù)據(jù),作為第一級對象進(jìn)行傳遞和保存,下面這篇文章主要給大家介紹了關(guān)于java閉包的用途是什么,需要的朋友可以參考下
    2024-03-03
  • Java string不可變原理實例解析

    Java string不可變原理實例解析

    這篇文章主要介紹了Java string不可變原理實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • SpringBoot集成Neo4j的詳細(xì)教程

    SpringBoot集成Neo4j的詳細(xì)教程

    Spring Boot 提供了對 Neo4j 的良好支持,使得開發(fā)者可以更方便地使用圖數(shù)據(jù)庫,通過使用 Spring Data Neo4j,開發(fā)者可以輕松地進(jìn)行數(shù)據(jù)訪問、操作以及管理,本文將詳細(xì)介紹如何在 Spring Boot 應(yīng)用中集成 Neo4j,需要的朋友可以參考下
    2024-11-11
  • Java實現(xiàn)分頁代碼

    Java實現(xiàn)分頁代碼

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)分頁代碼,提高查詢效率,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 淺析Java中的繼承與組合

    淺析Java中的繼承與組合

    本文將介紹組合和繼承的概念及區(qū)別,并從多方面分析在寫代碼時如何進(jìn)行選擇。文中通過示例代碼介紹的很詳細(xì),有需要的朋友可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • maven項目下solr和spring的整合配置詳解

    maven項目下solr和spring的整合配置詳解

    這篇文章主要介紹了maven項目下solr和spring的整合配置詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11

最新評論

溆浦县| 缙云县| 正阳县| 潜江市| 浦江县| 陇西县| 曲阜市| 大港区| 三门县| 宁海县| 汕头市| 绥德县| 武邑县| 福清市| 汝城县| 渝北区| 合山市| 茂名市| 杨浦区| 克山县| 嵊州市| 肇东市| 盐山县| 洛南县| 潞西市| 大邑县| 玉田县| 中方县| 苏尼特右旗| 娄烦县| 临武县| 孟连| 株洲县| 古田县| 娱乐| 定安县| 广宗县| 阳新县| 南郑县| 扬中市| 万载县|