ClassLoader关键在于
加载 -> 链接(验证+准备+解析) -> 初始化(使用前的准备) -> 使用 -> 卸载
可以只加载,不链接
ClassLoader.loadClass(className)
ClassLoader.loadClass(className,false)
也可以加载,并链接
Class.forName(className)
Class.forName(className,true,classloader);
判断一个类是否已经被加载 (只加载,不链接)
public static boolean isPresent(String name) {
try {
Thread.currentThread().getContextClassLoader().loadClass(name);
return true;
} catch (ClassNotFoundException e) {
return false;
}
}