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

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

 更新時間:2016年07月25日 11:53:20   投稿:jingxian  
下面小編就為大家?guī)硪黄ㄟ^java反射機制動態(tà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);
	}

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

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

相關文章

  • 解決idea中java出現無效的源發(fā)行版問題

    解決idea中java出現無效的源發(fā)行版問題

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

    Java注解之Elasticsearch的案例詳解

    學會了技術就要使用,否則很容易忘記,因為自然界壓根就不存在什么代碼、變量之類的玩意,這都是一些和生活常識格格不入的東西。這篇文章主要介紹了Java中Elasticsearch的案例,感興趣的可以了解一下
    2022-10-10
  • Java編寫實現九宮格應用

    Java編寫實現九宮格應用

    這篇文章主要為大家詳細介紹了Java編寫實現九宮格應用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Java自定義簡單標簽實例

    Java自定義簡單標簽實例

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

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

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

    Java利用opencv實現用字符展示視頻或圖片的方法

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

    Java中的Redis是什么意思

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

    Java動態(tài)腳本Groovy

    本文介紹了Java動態(tài)腳本Groovy,Groovy是用于Java虛擬機的一種敏捷的動態(tài)語言,它是一種成熟的面向對象編程語言,既可以用于面向對象編程,又可以用作純粹的腳本語言。使用該種語言不必編寫過多的代碼,同時又具有閉包和動態(tài)語言中的其他特性,需要的朋友可以參考一下
    2021-12-12
  • JAVA基礎快速從入門到精通

    JAVA基礎快速從入門到精通

    Java是一門面向對象的編程語言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征
    2022-03-03
  • Java如何替換jar中的class文件

    Java如何替換jar中的class文件

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

最新評論