在之前【http://www.cnblogs.com/webor2006/p/8905978.html】理论上的介绍了一下关于类加载的一个层次体系,回顾一下:
那如何来验证上图的这种关系呢?下面用代码来验证,如下:
实验一:
那先来看一下这个方法的一个官方说明:
关于这句话的含义其实可以从如下图中可以看出:
而简单看一下它的具体实现:
好对方法有了简单了解之后,回到代码上来:
在运行之前先来查看一下getParent()的官方说明:
再来看一下它的具体实现:
好~~再回来看一下代码的输出:
是不是跟开篇贴的层次图是一样的。其中系统类加载器也叫应用类加载器,为什么呢?
秒懂了吧,好接下来再来看另外一个实验:
实现二:
这次又用到了一个新的API,所以先了对它做个初步的了解:
好,那咱们来将这个类加载器打印出来看一下会是啥:
这样两者就关联上了,接下来去加载一个资源,这里的资源就以工程中的字节码class文件的加载为例,如下:
这里又有一个新的API,如下:
【注意】:上两个图片中的资源名称中的classloader写错了,写成了classloadder,人懒这里就不修改了,做个说明~~
当然也先了解一下这个方法:
好,继续回到代码:
通过上面的实例发现有多种获取ClassLoader的方式,下面总结一下:
其中最后一种方式用得比较少,了解一下既可。下面再来看一下对于不同的类它所对应的类加载器都是什么,其实之前就已经做过实现,这里再来回顾一下:
因为: