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