docs: public static Class<?> loadClass(String name, ClassLoader classLoader, boolean isInitialized) throws UtilException {
  		Assert.notNull(name, "Name must not be null");
  
  		// 加载原始类型和缓存中的类
  		Class<?> clazz = loadPrimitiveClass(name);
  		if (clazz == null) {
  			clazz = classCache.get(name);
  		}
  		if (clazz != null) {
  			return clazz;
  		}
  
  		if (name.endsWith(ARRAY_SUFFIX)) {
  			// 对象数组"java.lang.String[]"风格
  			final String elementClassName = name.substring(0, name.length() - ARRAY_SUFFIX.length());
  			final Class<?> elementClass = loadClass(elementClassName, classLoader, isInitialized);
  			clazz = Array.newInstance(elementClass, 0).getClass();
  		} else if (name.startsWith(NON_PRIMITIVE_ARRAY_PREFIX) && name.endsWith(";")) {
  			// "[Ljava.lang.String;" 风格
  			final String elementName = name.substring(NON_PRIMITIVE_ARRAY_PREFIX.length(), name.length() - 1);
  			final Class<?> elementClass = loadClass(elementName, classLoader, isInitialized);
  			clazz = Array.newInstance(elementClass, 0).getClass();
  		} else if (name.startsWith(INTERNAL_ARRAY_PREFIX)) {
  			// "[[I" 或 "[[Ljava.lang.String;" 风格
  			final String elementName = name.substring(INTERNAL_ARRAY_PREFIX.length());
  			final Class<?> elementClass = loadClass(elementName, classLoader, isInitialized);
  			clazz = Array.newInstance(elementClass, 0).getClass();
  		} else {
  			// 加载普通类
  			if (null == classLoader) {
  				classLoader = getClassLoader();
  			}
  			try {
  				clazz = Class.forName(name, isInitialized, classLoader);
  			} catch (ClassNotFoundException ex) {
  				// 尝试获取内部类，例如java.lang.Thread.State =》java.lang.Thread$State
  				clazz = tryLoadInnerClass(name, classLoader, isInitialized);
  				if (null == clazz) {
  					throw new UtilException(ex);
  				}
  			}
  		}
  
  		// 加入缓存并返回
  		return classCache.put(name, clazz);
  	}