【JDK源码分析】ClassLoader

【JDK源码分析】ClassLoader

首先先说一下关于ClassLoader官方给出的文档内容

什么是ClassLoader

一个类(class)的加载器(loader),是一个专门用于加载类的对象。
而这个ClassLoader类呢,实际上是一个抽象类。
它的作用是在于给一个类二进制名字,也就是在二进制中,可以找到你这个类并且和类文件(.class)里的数据。
那么通常的策略呢,是将一个类名,转化成文件名存在你文件系统中,最后从你这个文件系统中,去读取这个类文件(.class)。

这就解释了,为什么你的Java文件最后要编译成二进制文件,那么这个二进制文件又通过什么方法被找到了。

所以,你可以从这些类里都发现一个方法(getClassLoader()),这个方法获取到的,相对应的,就是当初定义这个类所用到的ClassLoader了。

是所有类都会有ClassLoader吗?上文不是有说:类文件之所有能被找到,就是有ClassLoader吗?
没有ClassLoader就找不到一个类了对吧?

文档中给出这种解释:
有一种类型虽然你同样可以使用(getClassLoader())这个方法,但是这并不是真正意义上的获取ClassLoader。
那就是Array对象。
因为Array的创建不是通过ClassLoader去创建的,而是当JVM运行的时候,根据需要去创建的。
其中提到了很明显的一点,如果你的Array,是基本类型的Array,那么它是没有ClassLoader的,也就是返回为Null。


标题:【JDK源码分析】ClassLoader
作者:taoism-o
地址:https://kevincheng.xin/articles/2019/11/20/1574248991981.html