@SuppressWarnings("unchecked") private static <T> T newInstance0(ClassLoader classLoader, String className) throws Exception { Class klass = classLoader == null ? Class.forName(className) : tryLoadClass(className, classLoader); final Constructor constructor = klass.getDeclaredConstructor(); if (!constructor.isAccessible()) { constructor.setAccessible(true); } if (!shouldBypassCache(klass) && classLoader != null) { CONSTRUCTOR_CACHE.put(classLoader, className, constructor); } return (T) constructor.newInstance(); }
@SuppressWarnings("unchecked") private static <T> T newInstance0(ClassLoader classLoader, String className) throws Exception { Class klass = classLoader == null ? Class.forName(className) : tryLoadClass(className, classLoader); final Constructor constructor = klass.getDeclaredConstructor(); if (!constructor.isAccessible()) { constructor.setAccessible(true); } if (!shouldBypassCache(klass) && classLoader != null) { CONSTRUCTOR_CACHE.put(classLoader, className, constructor); } return (T) constructor.newInstance(); }
private static Class<?> tryLoadClass(String className, ClassLoader classLoader) throws ClassNotFoundException { Class<?> clazz; if (!CLASS_CACHE_DISABLED) { clazz = CLASS_CACHE.get(classLoader, className); if (clazz != null) { return clazz; } } if (className.startsWith("[")) { clazz = Class.forName(className, false, classLoader); } else { clazz = classLoader.loadClass(className); } if (!CLASS_CACHE_DISABLED) { if (!shouldBypassCache(clazz)) { CLASS_CACHE.put(classLoader, className, clazz); } } return clazz; }
private static Class<?> tryLoadClass(String className, ClassLoader classLoader) throws ClassNotFoundException { Class<?> clazz; if (!CLASS_CACHE_DISABLED) { clazz = CLASS_CACHE.get(classLoader, className); if (clazz != null) { return clazz; } } if (className.startsWith("[")) { clazz = Class.forName(className, false, classLoader); } else { clazz = classLoader.loadClass(className); } if (!CLASS_CACHE_DISABLED) { if (!shouldBypassCache(clazz)) { CLASS_CACHE.put(classLoader, className, clazz); } } return clazz; }