docs: public static <T> T invoke(String className, String methodName, boolean isSingleton, Object... args) {
  		Class<Object> clazz = loadClass(className);
  		try {
  			final Method method = getDeclaredMethod(clazz, methodName, getClasses(args));
  			if (null == method) {
  				throw new NoSuchMethodException(StrUtil.format("No such method: [{}]", methodName));
  			}
  			if (isStatic(method)) {
  				return ReflectUtil.invoke(null, method, args);
  			} else {
  				return ReflectUtil.invoke(isSingleton ? Singleton.get(clazz) : clazz.newInstance(), method, args);
  			}
  		} catch (Exception e) {
  			throw new UtilException(e);
  		}
  	}