ClassLoader是一个类加载器,在Java里面类加载器并不只有一个,我们自己所编写的类加载器往往都去继承ClassLoader,所以自己的加载器是最后一次执行的。
所有的Java程序类加载器一共分为两套类加载器:双亲加载;
(1)系统中的类都会由一个系统内部最高的类加载器负责加载,如果启动的时候要加载的系统类太多了,那么一定会造成启动变慢,所以JDK1.9才提出了一个模块化设计;
(2)如果用户自己定义的类,会使用其它的类加载器(ExtClassLoader、AppClassLoader、自己定义的的类加载器),这样可以避免系统安全问题。
什么是系统安全问题?
比如在Java里面有一个java.lang.string,如果你现在定义了完全一样的java.lang.string类,那么最终所带来的问题就有可能造成安全隐患,所以JDK在设计的时候为了防止这种问题的出现,采用了双亲加载机制,以保证系统安全。
同时使用自定义的类加载器还有一个好处,可以由用户自己来定义类文件的来源,默认情况下的类加载器(99%是够用的)都是通过ClassPath加载的,但是使用了自定义的加载器可以通过远程或文件进行加载。
更多专业知识,面试技巧就在面试一点通,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧