不同的类加载器作用与加载动作分析

在之前【http://www.cnblogs.com/webor2006/p/8905978.html】理论上的介绍了一下关于类加载的一个层次体系,回顾一下:

那如何来验证上图的这种关系呢?下面用代码来验证,如下:

实验一:

那先来看一下这个方法的一个官方说明:

关于这句话的含义其实可以从如下图中可以看出:

而简单看一下它的具体实现:

好对方法有了简单了解之后,回到代码上来:

在运行之前先来查看一下getParent()的官方说明:

再来看一下它的具体实现:

好~~再回来看一下代码的输出:

是不是跟开篇贴的层次图是一样的。其中系统类加载器也叫应用类加载器,为什么呢?

秒懂了吧,好接下来再来看另外一个实验:

实现二:

这次又用到了一个新的API,所以先了对它做个初步的了解:

好,那咱们来将这个类加载器打印出来看一下会是啥:

这样两者就关联上了,接下来去加载一个资源,这里的资源就以工程中的字节码class文件的加载为例,如下:

这里又有一个新的API,如下:

【注意】:上两个图片中的资源名称中的classloader写错了,写成了classloadder,人懒这里就不修改了,做个说明~~

当然也先了解一下这个方法:

好,继续回到代码:

通过上面的实例发现有多种获取ClassLoader的方式,下面总结一下:

其中最后一种方式用得比较少,了解一下既可。下面再来看一下对于不同的类它所对应的类加载器都是什么,其实之前就已经做过实现,这里再来回顾一下:

因为:

猜你喜欢

转载自www.cnblogs.com/webor2006/p/9029910.html