通过java反射机制动态调用某方法的总结(推荐)

 更新时间:2016年07月25日 11:53:20   投稿:jingxian  
下面小编就为大家带来一篇通过java反射机制动态调用某方法的总结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

如下:

	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反射机制动态调用某方法的总结(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于Spring Batch 配置重试逻辑

    基于Spring Batch 配置重试逻辑

    这篇文章主要介绍了Spring Batch 配置重试逻辑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java Collection 接口和常用方法综合详解

    Java Collection 接口和常用方法综合详解

    Collection派生出三个子接口,Set代表不可重复的无序集合、List代表可重复的有序集合、Queue是java提供的队列实现,通过它们不断的扩展出很多的集合类,接下来我们详细介绍一下
    2021-11-11
  • Java使用easyExcel导出excel数据案例

    Java使用easyExcel导出excel数据案例

    这篇文章主要介绍了Java使用easyExcel导出excel数据案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • springboot v2.0.3版本多数据源配置方法

    springboot v2.0.3版本多数据源配置方法

    这篇文章主要介绍了springboot v2.0.3版本多数据源配置方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2018-11-11
  • Spring注解@Configuration与@Bean注册组件的使用详解

    Spring注解@Configuration与@Bean注册组件的使用详解

    这篇文章主要介绍了SpringBoot中的注解@Configuration与@Bean注册组件的使用,具有很好的参考价值,希望对大家有所帮助
    2022-06-06
  • request如何获取body的json数据

    request如何获取body的json数据

    这篇文章主要介绍了request如何获取body的json数据操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 教你利用SpringBoot写一个属于自己的Starter

    教你利用SpringBoot写一个属于自己的Starter

    如果我们将可独立于业务代码之外的功配置模块封装成一个个starter,复用的时候只需要将其在pom中引用依赖即可,SpringBoot为我们完成自动装配,简直不要太爽,这篇文章主要给大家介绍了关于如何利用SpringBoot写一个属于自己的Starter,需要的朋友可以参考下
    2022-03-03
  • SpringBoot集成quartz实现定时任务详解

    SpringBoot集成quartz实现定时任务详解

    最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式。本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数据库的分布式任务管理和控制job生命周期
    2022-08-08
  • Java开发岗位面试被问到反射怎么办

    Java开发岗位面试被问到反射怎么办

    这篇文章主要介绍了java 面向对象面试集锦的相关资料,这里整理了面向对象的基础知识,帮助大家学习理解此部分的知识,需要的朋友可以参考下
    2021-07-07
  • Java中OAuth2.0第三方授权原理与实战

    Java中OAuth2.0第三方授权原理与实战

    本文主要介绍了Java中OAuth2.0第三方授权原理与实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05

最新评论