code: public Class<?> getClassForName(String className, ClassLoader classLoader) {
  
          if (className == null) {
              return null;
          }
  
          int bracketIndex = className.indexOf('[');
          if (bracketIndex > 0) {
              // Convert foo[][] to [[Lfoo;
              className = convertArrayClassName(className, bracketIndex);
          }
  
          if (className == null) {
              // Array class name could not be converted (should only happen
              // for void[]
              return null;
          }
          
          Class<?> clazz = cPrimativeClasses.get(className);
          if (clazz != null) {
              // Return the primitive class (i.e. int.class for "int")
              return clazz;
          }
  
          Throwable error = null;
          try {
              if (classLoader == null) {
                  classLoader = getClass().getClassLoader();
              }
  
              if (classLoader != null) {
                  clazz = classLoader.loadClass(className);
              }
          }
          catch (Throwable t) {
              error = t;
          }
  
          if (clazz == null) {
              // Try Class.forName
              try {
                  clazz = Class.forName(className);
              }           
              catch (Throwable t) {
                  if (error == null) {
                      //t.printStackTrace();
                  }
                  else {
                      //error.printStackTrace();
                  }
              }
          }
  
          return clazz;
      }
docs: Returns a Class object for a given name. Primitive classes can be
  loaded via thier normal names (i.e. "float"). Array classes can be
  loaded using either the normal Java name (i.e. int[][]) or the VM
  name (i.e. [[I).
  <p>
  Note this method swallows all exceptions and simply returns null if
  the class could not be loaded.
  
  @param className the name of the Class
  @param classLoader the ClassLoader to use