java语言 百文网手机站

java类加载器

时间:2021-05-02 13:27:30 java语言 我要投稿

java类加载器

  类加载器是Java语言的一个创新,也是Java语言流行的重要原因之一。它使得Java类可以被动态加载到Java虚拟机中并执行。以下是小编为大家搜索整理的java类加载器,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网!

  类加载器:

  java虚拟机中可以安装多个类加载,系统默认三个主要类加载器,每个类负责加载特定位置的.类:BootStrap(内嵌在java虚拟机中由C++编写),ExtClassLoader,AppClassLoad

  类加载器也是java类,因为其他是java类的类加载器本身也要被类加载器加载,显然必须有第一个类加载器不是java类,这正是BootStrap.

  java虚拟机中的所有类装载器采用具有父子关系的树形结构进行组织,在实例化每个类装载器对象时,需要为其指定一个父级类装载器对象

  或者采用系统类装载器为其父级类加载。

  类加载器之间的父子关系和管辖范围:

  BootStrp------>JRE/lib/rt.jar

  ExtClassLoader---------->JRE/lib/ext/*.jar

  AppClassLoader---------->CLASSPATH指定的所有jar或目录。

  类加载器的委托机制:

  当java虚拟机要加载一个类时,到底派出哪个类加载器加载呢?

  1.首先当前线程的类加载器去加载线程中的第一个类。

  2.如果类A中引用了类B,java虚拟机将使用加载类A的类加载器来加载类B.

  3.还可以直接调用ClassLoader.loaderClass()方法来指定某个类加载器去加载某个类。

  每个类加载器加载类时,又先委托给其上级类加载器。

  1.当所有祖宗类加载器没有加载到类,回到发起者类加载器,还加载不了,则抛出ClassNotFoundException,不是再去找发起者类

  类加载器的儿子,因为没有getChild方法,即使有,那有多个儿子,找哪一个呢?

  2.对着类加载器的层次结构图和委托加载原理,解释先去将ClassLoaderTest输出成jre/lib/ext目录下的elva.jar包中后,运行结果

  ExtClassLoader的原因。

  面试题:能不能自己写个类叫java.lang.System,为了不让我们写System类,类加载采用委托机制,这样可以保证爸爸们优先,也就是总是使用爸爸们能找到的类,这样总是使用java系统提供的System.但是我们可以写一个类加载器来加载我们自己写的java.lang.System类。

【java类加载器】相关文章:

Java类加载器类介绍11-30

Java的内部类与类的加载器11-25

java默认构建器是什么?12-08

Java类别的载入器12-07

Java对象和类10-03

Java import以及Java类的搜索路径10-04

Java类库及其组织结构(Java API)10-04

java集合类基本简介12-08

java类文件内容介绍12-07

java类笔试题目10-05