JaveEE-27类加载器和反射

类加载器的作用:

  1.Bootstrap ClassLoader 根类加载器

    也被称为引导类加载器,负责Java核心类的加载,主要加载的是JVM自身需要的类,这个类加载使用C++语言实现,是虚拟机自身的一部分。

    比如System.String等。在JDK中JRE的lib目录下rt.jar文件中。

  2.Extension ClassLoader 扩展类加载器

    负责JRE的扩展目录中jar包的加载,这个类加载使用Java语言实现。

    在JDK中JRE的lib目录下ext目录中。

  3.System ClassLoader 系统类加载器

    负责在JVM启动时加载来自java命令的class文件,以及classpath环境变量所指定的jar包和类路径,

  在Java的日常应用开发中,类的加载几乎是由上述3种类加载器相互配合执行的,在必要时,我们还可以自定义类加载器。

  需要注意的是,Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。

  而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式即把请求交由父类处理。

 

反射:

  Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。

  这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

  要想解剖一个类,必须先要获取到该类的字节码文件对象,而解剖使用的就是Class类中的方法。

  所以先要获取到每一个字节码文件对应的Class类型的对象。

 

posted @ 2021-05-06 11:21  benon  阅读(160)  评论(0编辑  收藏  举报