关于java类装载器与反射机制的理解

时间:2022-10-26 21:04:35

类装载器ClassLoader

一,作用

  将一个java字节码文件装入JVM(java虚拟机)中,步骤如下:
      (1)装载,查找和导入Class文件
      (2)链接,校验、准备和解析步骤
               ①校验:检查载入Class文件的正确性
               ②准备:给类的静态变量分配存储空间
               ③解析:将符号引用转换为
      (3)初始化,对类的静态变量,静态代码块执行初始化工作。

二,类装载器的分类
      (1)ClassLoader(根装载器):负责装载JRE核心类库
      (2)ExtClassLoader(拓展类装载器):ClassLoader的子类,负责装载JRE拓展目录ext中的JAR包
      (3)AppClassLoader(应用类装载器):ExtClassLoader的子类,负责装载classpath路径下的类包

三,类实例、类描述对象和类装载器的关系如图:

关于java类装载器与反射机制的理解

     每个类在JVM中都有一个对应的java.lang.Class对象,它提供了类的结构信息描述,数组、枚举、注解及基本java类型(如int、double等)。Class是对象在装载时,由JVM调用类装载器的defineClass()方法自动构造的。

四,JAVA反射机制

     通过从Class对象中获取构造函数、成员变量、方法类等元素的反射对象,并以编程方式通过这些反射对象对目标类进行操作。常见的有以下主要反射类:
    (1)Construcor:类的构造函数反射类,通过Class#getConstructs()方法获取类的所有构造函数反射对象数组Construcor[]。
      (2)Method:类方法反射类,通过Class#getDeclaredMethods()方法获取类的所有方法反射类对象数组Method[]。
      (3)Field:类的成员变量反射类,通过Class#getDeclaredFields()方法获取类的所有成员变量反射类对象数组Method[]。等等反射类。。。。