package com.web.common.utility.reflector;
import java.io.Serializable;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
/**
* @comany 阿斯达克(上海)深圳分公司
* @author steven.wu
* @date 2008-4-21
* @description 利用反射动态加载类,并调用其方法执行。
*/
public class ReflectorFactory implements Serializable {
public ReflectorFactory() {
// TODO Auto-generated constructor stub
}
public Object newInstance(String className) throws Exception {
Class c = Class.forName(className);
return c.newInstance();
}
public Object newInstance(String className, Object[] args) throws Exception {
Class c = Class.forName(className);
Class[] argsClass = new Class[args.length];
for (int i = 0, j = args.length; i < j; i++) {
argsClass[i] = args[i].getClass();
}
Constructor cons = c.getConstructor(argsClass);
return cons.newInstance(args);
}
// 判断是否为某个类的实例
public boolean isInstance(Object obj, Class cls) {
return cls.isInstance(obj);
}
//执行无参数方法.
public Object invokeMethod(Object o, String methodName)
throws Exception {
Class c = o.getClass();
Method method = c.getDeclaredMethod(methodName);
return method.invoke(o);
}
// 执行有参数方法.
public Object invokeMethod(Object o, String methodName, Object[] args)
throws Exception {
Class c = o.getClass();
Class[] argsClass = new Class[args.length];
for (int i = 0, j = args.length; i < j; i++) {
argsClass[i] = args[i].getClass();
}
Method method = c.getMethod(methodName, argsClass);
return method.invoke(o, args);
}
}

902

被折叠的 条评论
为什么被折叠?



