public class CallMethod {
/**
*
* @param obj 传进来的对象
* @param method1 方法名
* @param paramTypes 参数类型[]
* @param params 参数[]
* @return
*/
public static Object call(Object obj,String method1, Class[] paramTypes, Object[] params) {
try {
//加载类,参数是完整类名
//Class clazz = Class.forName(className);
Class<?> clazz = obj.getClass();
//第一个参数是方法名,后面的参数指示方法的参数类型和个数
Method method = clazz.getMethod(method1, paramTypes);
//accessiable设为true表示忽略java语言访问检查(可访问private方法)
method.setAccessible(true);
//第一个参数类实例(必须有对象才能调用非静态方法,如果是静态方法此参数可为null)
//第二个是要传给方法的参数
Object result = method.invoke(obj, params);
return result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}