java类加载器的树状组织结构
Java 中的类加载器大致可以分成两类,一类是系统提供的,另外一类则是由 Java 应用开发人员编写的。那么java类加载器有哪些,下面yjbys小编为大家一一解读!
系统提供的类加载器主要有下面三个:
引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的,并不继承自 sLoader。扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。可以通过 ystemClassLoader()来获取它。除了系统提供的类加载器以外,开发人员可以通过继承 sLoader类的方式实现自己的类加载器,以满足一些特殊的需求。
除了引导类加载器之外,所有的类加载器都有一个父类加载器。通过 表 1中给出的 getParent()方法可以得到。对于系统提供的类加载器来说,系统类加载器的父类加载器是扩展类加载器,而扩展类加载器的父类加载器是引导类加载器;对于开发人员编写的类加载器来说,其父类加载器是加载此类加载器 Java 类的类加载器。因为类加载器 Java 类如同其它的 Java 类一样,也是要由类加载器来加载的。一般来说,开发人员编写的类加载器的父类加载器是系统类加载器。类加载器通过这种方式组织起来,形成树状结构。树的根节点就是引导类加载器。图 1中给出了一个典型的类加载器树状组织结构示意图,其中的箭头指向的是父类加载器。
图 1. 类加载器树状组织结构示意图
代码清单 1演示了类加载器的树状组织结构。
清单 1. 演示类加载器的.树状组织结构
public class ClassLoaderTree{ public static void main(String[]args){ ClassLoaderloader=ClassLoaderTree. class lassLoader(); while (loader!= null ){ tln(ring()); loader=arent(); } } } |
每个 Java 类都维护着一个指向定义它的类加载器的引用,通过 getClassLoader()方法就可以获取到此引用。代码清单 1中通过递归调用getParent()方法来输出全部的父类加载器。代码清单 1的运行结果如 代码清单 2所示。
清单 2. 演示类加载器的树状组织结构的运行结果
cher$AppClassLoader @9304b1 cher$ExtClassLoader @190d11 |
如 代码清单 2所示,第一个输出的是 ClassLoaderTree类的类加载器,即系统类加载器。它是 cher$AppClassLoader类的实例;第二个输出的是扩展类加载器,是 cher$ExtClassLoader类的实例。需要注意的是这里并没有输出引导类加载器,这是由于有些 JDK 的实现对于父类加载器是引导类加载器的情况,getParent()方法返回 null。
-
java认证考试培训内容
SunJava认证分为两个级别:Sun认证Java程序员和Sun认证Java开发员。下面是小编整理的关于java认证考试培训内容,欢迎大家参考!Struts多模块的应用在使用到struts多模块的一些小经验可以和大家分享下,关于多module的配置就不说了,只需要用不同的config,作为默认modul...
-
java面向对象编程题库及答案
java认证考试正在紧张备考中,为帮助大家更好复习,yjbys小编为同学们带来最新java认证考试题库及答案,欢迎参考学习!要是某个类能被同一个包中的其他类访问,但不能被这个包以外的类访问,可以(A)A.让该类不使用任何关键字B.使用private关键字C.使用final关键字D.使用p...
-
Java字符串反转和Eclipse代码自动提示
Java字符串反转问题java反转:可以使用StringBuffer中的reverse()方法来实现字符串反转。也可以自己写个算法。如下所示:Java代码StringparamString=武汉海源科技有限公司;/**自己写反转算法*/char[]value=arArray();intparamStringLength=th()-1;for(inti=paramS...
-
2016年java编译命令详解
最近小编重新复习了一下java基础,这里便讲讲对于一个类文件如何编译、运行、反编译的。也让自己加深一下印象如题,首先我们在桌面,开始->运行->键入cmd回车,进入windows命令行。进入如图所示的画面:可知,当前默认目录为C盘Users文件夹下的Administrator文件夹。一般...