public class UClassLoaderUtil extends Object
ClassLoader
工具类Constructor and Description |
---|
UClassLoaderUtil() |
Modifier and Type | Method and Description |
---|---|
static ClassLoader |
getClassLoader()
|
static ClassLoader |
getContextClassLoader()
获取当前线程的
ClassLoader |
static Class<?> |
loadClass(String name,
boolean isInitialized)
加载类,通过传入类的字符串,返回其对应的类名,使用默认ClassLoader
扩展 Class.forName(String, boolean, ClassLoader) 方法,支持以下几类类名的加载: |
static Class<?> |
loadClass(String name,
ClassLoader classLoader,
boolean isInitialized)
加载类,通过传入类的字符串,返回其对应的类名
此方法支持缓存,第一次被加载的类之后会读取缓存中的类 加载失败的原因可能是此类不存在或其关联引用类不存在 扩展 Class.forName(String, boolean, ClassLoader) 方法,支持以下几类类名的加载: |
static Class<?> |
loadPrimitiveClass(String name)
加载原始类型的类。包括原始类型、原始类型数组和void
|
public static ClassLoader getContextClassLoader()
ClassLoader
Thread.getContextClassLoader()
public static ClassLoader getClassLoader()
ClassLoader
1、获取当前线程的ContextClassLoader 2、获取UClassLoaderUtil
类对应的ClassLoader 3、获取系统ClassLoader(ClassLoader.getSystemClassLoader()
)
public static Class<?> loadClass(String name, boolean isInitialized) throws UtilException
Class.forName(String, boolean, ClassLoader)
方法,支持以下几类类名的加载:
1、原始类型,例如:int 2、数组类型,例如:int[]、Long[]、String[] 3、内部类,例如:java.lang.Thread.State会被转为java.lang.Thread$State加载
name
- 类名isInitialized
- 是否初始化类(调用static模块内容和初始化static属性)UtilException
- 包装ClassNotFoundException
,没有类名对应的类时抛出此异常public static Class<?> loadClass(String name, ClassLoader classLoader, boolean isInitialized) throws UtilException
Class.forName(String, boolean, ClassLoader)
方法,支持以下几类类名的加载:
1、原始类型,例如:int 2、数组类型,例如:int[]、Long[]、String[] 3、内部类,例如:java.lang.Thread.State会被转为java.lang.Thread$State加载
name
- 类名classLoader
- ClassLoader
,null
则使用系统默认ClassLoaderisInitialized
- 是否初始化类(调用static模块内容和初始化static属性)UtilException
- 包装ClassNotFoundException
,没有类名对应的类时抛出此异常Copyright © 2020. All rights reserved.