public static <T> T getObj(String className, Object arg1, Object arg2, Object arg3)
      throws ReflectiveOperationException {
    for (Constructor<?> ctor : Class.forName(className).getDeclaredConstructors()) {
      Class<?>[] paramTypes = ctor.getParameterTypes();
      if (paramTypes.length == 3 && checkAssignable(paramTypes[0], arg1) && checkAssignable(paramTypes[1], arg2)
          && checkAssignable(paramTypes[2], arg3)) {
        return (T) ctor.newInstance(arg1, arg2, arg3);
      }
    }
    throw buildNoConstructorException(className, arg1, arg2, arg3);
  }
Instantiate a class instance from a given className with three args
@param className
@param arg1
@param arg2
@param arg3
@param <T>
@return
@throws ReflectiveOperationException
ambry-utils/src/main/java/com/github/ambry/utils/Utils.java