public static void doSome(String className, String methodName,String[]methodArgs){
Class c = Class.forName(className);
Object target = c.newInstance();
if(methodArgs == null) {
Method m = c.getMethod(methodName);
m.invoke(target);
} else if(methodArgs.length == 1) {
Method m = c.getMethod(methodName,methodArgs[0].getClass());
m.invoke(target,methodArgs[0]);
} else if(methodArgs.length == 2) {
Method m = c.getMethod(methodName,methodArgs[0].getClass(),methodArgs[1].getClass());
m.invoke(target,methodArgs[0],methodArgs[1]);
} else if(methodArgs.length == 3) {
Method m = c.getMethod(methodName,methodArgs[0].getClass(),methodArgs[1].getClass(),methodArgs[2].getClass());
m.invoke(target,methodArgs[0],methodArgs[1],methodArgs[2]);
} else if(methodArgs.length == 4) {
Method m = c.getMethod(methodName,methodArgs[0].getClass(),methodArgs[1].getClass(),methodArgs[2].getClass(),methodArgs[3].getClass());
m.invoke(target,methodArgs[0],methodArgs[1],methodArgs[2],methodArgs[3]);
} else if(methodArgs.length == 5) {
Method m = c.getMethod(methodName,methodArgs[0].getClass(),methodArgs[1].getClass(),methodArgs[2].getClass(),methodArgs[3].getClass(),methodArgs[4].getClass());
m.invoke(target,methodArgs[0],methodArgs[1],methodArgs[2],methodArgs[3],methodArgs[4]);
}
}
代码就是上边这样的,就是想通过反射实现一个动态代理,参数是被代理类的类名,被代理类要执行的方法名,被代理类执行的方法的参数,可以怎么再写的好一点呢?
(就是被代理类的参数问题,有几个参数invoke的时候就需要添加几个参数,获取method时候就需要添加几个参数类名)