docs: public static <T> T invoke(String classNameWithMethodName, boolean isSingleton, Object... args) {
  		if (StrUtil.isBlank(classNameWithMethodName)) {
  			throw new UtilException("Blank classNameDotMethodName!");
  		}
  
  		int splitIndex = classNameWithMethodName.lastIndexOf('#');
  		if (splitIndex <= 0) {
  			splitIndex = classNameWithMethodName.lastIndexOf('.');
  		}
  		if (splitIndex <= 0) {
  			throw new UtilException("Invalid classNameWithMethodName [{}]!", classNameWithMethodName);
  		}
  
  		final String className = classNameWithMethodName.substring(0, splitIndex);
  		final String methodName = classNameWithMethodName.substring(splitIndex + 1);
  
  		return invoke(className, methodName, isSingleton, args);
  	}