public static Class getClass(String typeStr) {
        Class clazz = ReflectCache.getClassCache(typeStr);
        if (clazz == null) {
            if ("void".equals(typeStr)) {
                clazz = void.class;
            } else if ("boolean".equals(typeStr)) {
                clazz = boolean.class;
            } else if ("byte".equals(typeStr)) {
                clazz = byte.class;
            } else if ("char".equals(typeStr)) {
                clazz = char.class;
            } else if ("double".equals(typeStr)) {
                clazz = double.class;
            } else if ("float".equals(typeStr)) {
                clazz = float.class;
            } else if ("int".equals(typeStr)) {
                clazz = int.class;
            } else if ("long".equals(typeStr)) {
                clazz = long.class;
            } else if ("short".equals(typeStr)) {
                clazz = short.class;
            } else {
                String jvmName = canonicalNameToJvmName(typeStr);
                clazz = ClassUtils.forName(jvmName);
            }
            ReflectCache.putClassCache(typeStr, clazz);
        }
        return clazz;
    }
@Test
    public void testGetClassAccordingToTCL() {
        // incompatible with JDK 9+
        URLClassLoader current = (URLClassLoader) this.getClass().getClassLoader();
        TempClassLoader t0 = new TempClassLoader(current.getURLs(), null);
        TempClassLoader t1 = new TempClassLoader(current.getURLs(), null);

        ClassLoader old = Thread.currentThread().getContextClassLoader();
        Thread.currentThread().setContextClassLoader(t0);
        Class c0 = ClassTypeUtils.getClass(ClassTypeUtils.class.getCanonicalName());
        Thread.currentThread().setContextClassLoader(t1);
        Class c1 = ClassTypeUtils.getClass(ClassTypeUtils.class.getCanonicalName());

        Thread.currentThread().setContextClassLoader(t0);
        Assert.assertEquals(c0, ReflectCache.getClassCache(ClassTypeUtils.class.getCanonicalName()));
        Thread.currentThread().setContextClassLoader(t1);
        Assert.assertEquals(c1, ReflectCache.getClassCache(ClassTypeUtils.class.getCanonicalName()));
        Thread.currentThread().setContextClassLoader(old);
    }