8、类加载器
?四、类加载器的委托机制
?
每个ClassLoader本身只能分别加载特定位置和目录中的类,但它们可以委托其他的类加载器去加载类,这就是类加载器的委托模式委托机制可以保证内存中只有一份相应类的字节码当java虚拟机要加载一个类时,到底派出哪个类加载器去加载呢?首先,当前线程的类加载器去加载线程中的第一个类如果类A中引用了类B,java虚拟机将实用加载类A的类加载器加载类B还可以直接调用ClassLoader.loadClass()方法来指定某个类加载器去加载某个类每个类加载器加载类时,又先委托给其上级类加载器当所有祖宗类加载器没有加载到类,回到发起者类加载器还加载不了,则抛出ClassNotFoundException,而不是再去找发起者类加载器的儿子因为没有getChild方法,即使有,那有多个儿子,找哪一个呢?五、简单示例
?
?
package day27;import java.util.Date;public class ClassLoaderTest {public static void main(String[] args) throws Exception{MyClassLoader loader = new MyClassLoader("mylib");Date d = (Date) loader.loadClass("day27.Demo").newInstance();System.out.println(d);}}?