这是我看视频时,做的笔记,对委托机制不清楚: 1.首先是当前线程的类加载器去加载线程中的第一个类。
2.还可以直接调用ClassLoader.loadClass()方法来指定某个类加载器去加载某个类。 3当所有祖宗类加载器没有加载到类,回到发起者类加载器,还加载不了,则抛ClassNotFoundException
在视频中有这样一个例子: 将ClassLoaderTest输出成jre/lib/ext目录下的itcast.jar包中后,运行结果为ExtClassLoader。 这与 “首先是 当前线程的类加载器去加载线程中的第一个类” 有矛盾吗? 若 BootSrap 类加载器、 ExtClassLoader、AppClassLoad 中都有 对应的类,那应该使用哪一个加载器?
加载器的委托模式,是先一级级向上委托到BootStrap后再向下一级级查找要加载的类, 还是 直接先从BootStrap 向下查找要加载的类呢?
|