目录
加载类的过程需要从系统外部根据类名获取其二进制数据流,途径可以是外部文件,数据库或者从网络上download,接着把它们交给JVM,让虚拟机将这些数据转化成Class实例,这一过程通过ClassLoader类加载器来完成,ClassLoader只作用在类加载过程,获取二进制流交给JVM之后,接下来的连接和初始化等操作就不再参与了,对于ClassLoader,它是一个类,里面提供了一些方法来完成加载流程,例如
public Class<?> loadClass(String name) throws ClassNotFoundException方法,通过传入类名,获取该类的一个实例,如果无法找到这个类就会抛出ClassNotFoundException异常。还有
protected final Class<?> findLoadedClass(String name)方法根据类名查找返回已经被加载的类。除了一些方法外,还有一个重要的属性是parent字段,它用来表示当前ClassLoader的双亲,没错,ClassLoader不止一个,它们分了几个级。
ClassLoader分类
ClassLoader分类有四种,自顶向下依次为启动类加载器BootStrap ClassLoader、扩展类加载器Extension ClassLoa