通过java反射机制动态调用某方法的总结
通过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;
 
相关文档:
Java对象类型转换时Java开发中经常遇到的,本文向您介绍Java对象类型转换的一些技巧和注意事项,包括向上转型与向下转型都操作和主要点。
一、向上转型与向下转型。
对象类型的转换在Java语言平台中经常遇到,主要包括向上转型与向下转型操作。程序开发人员需要熟练 ......
呵呵。。
import java.io.*;
class Exec{
public static void main(String []args)throws IOException{
//Linux系统命令:ls -l
String command = "ls -l";
//获取当前系统的环境。
Runtime rt = Runtime.getRuntime();
......
Java 杂谈(三)
这已经笔者写的第三篇Java杂记了,庆幸前两篇一直得到论坛朋友们的支持鼓励,还望大家继续指正不足之处。笔者也一直渴望通过这样方式清醒的自审,来寻找自己技术上的不足之处,希望和共同爱好Java的同仁们一起提高。
& ......
----------接口------------
import java.rmi.*;
public interface HelloIn extends java.rmi.Remote{
String sayHello() throws RemoteException;
}
--------实现类-------------
import java.rmi.*;
import java.net.*;
import java.rmi.registry.*;
import java.rmi.server.*;
public class Hello exten ......
一:简介
本文介绍了Java与.NET开发的Web Services相互调用的技术。本文包括两个部分,第一部分介绍了如何用.NET做客户端调用Java写的Web Services,第二部分介绍了如何用Java做客户端调用.NET开发的Web Services。
二:项目需要的工具
WindowsXP Professial(IIS)
Eclipse3.1(已装好Tomcat axis)
VS ......