以下是反射调用静态方法的实例,普通方法只需将clazz.newInstance()传入invoke方法的第一个参数
/**
* 通过全限定类名调用方法
*
* @param clazzPath
* @param clazzName
* @param methodName
* @param parameterTypes
* @param parameters
* @return java.lang.Object
* @author xx
* @date 2020/8/13 10:38
*/
private static Object invokeMethod(String clazzPath,String clazzName,String methodName,Class[] parameterTypes, Object[] parameters){
if(parameterTypes == null){ parameterTypes = new Class[0]; }
if(parameters == null){ parameters = new Object[0]; }
if(parameterTypes.length != parameters.length){
throw new RuntimeException("参数类型和参数数量不一致");
}
Object object;
try{
Class clazz = Class.forName(clazzPath + clazzName);
Method method = clazz.getDeclaredMethod(methodName,parameterTypes);
method.setAccessible(true);
object = method.invoke(null,parameters);//静态方法写null,普通方法写clazz.newInstance()
}catch(ClassNotFoundException e){
throw new RuntimeException("类不存在:"+clazzPath+clazzName);
}catch(NoSuchMethodException e){
throw new RuntimeException("方法不存在:"+methodName);
}catch(Exception e){
throw new RuntimeException(clazzPath+clazzName+"不存在"+methodName+"方法");
}
return object;
}
![利用反射调用静态方法](https://img-blog.csdnimg.cn/20200813133206902.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h4ODk3MTE1Mjkz,size_16,color_FFFFFF,t_70)