在Java中,ClassLoader是一个抽象类,位于java.lang包中,下面对该类的一些重要接口方法进行介绍
- Class loadClass(String name) :name参数指定类装载器需要装载类的名字,必须使用全限定类名,如:com.smart.bean.Car。该方法有一个重载方法 loadClass(String name,boolean resolve),resolve参数告诉类装载器时候需要解析该类,在初始化之前,因考虑进行类解析的工作,但并不是所有的类都需要解析。如果JVM只需要知道该类是否存在或找出该类的超类,那么就不需要进行解析。
- Class defineClass(String name,byte[] b,int len):将类文件的字节数组转换成JVM内部的java.lang.Class对象。字节数组可以从本地文件系统、远程网络获取。参数name为字节数组对应的全限定类名。
- Class findSystemClass(String name):从本地文件系统在来Class文件。如果本地系统不存在该Class文件。则抛出ClassNotFoundException异常。该方法是JVM默认使用的装载机制
- Class findLoadedClass(String name):调用该方法来查看ClassLoader是否已载入某个类。如果已载入,那么返回java.lang.Class对象;否则返回null。如果强行装载某个已存在的类,那么则抛出链接错误。
- ClassLoader getParent():获取类装载器的父装载器。除根装载器外,所有的类装载器都有且仅有一个父装载器。ExtClassLoader的父装载器是根装载器,因为根装载器非java语言编写,所以无法获取,将返回null。