Java类加载机制和反射机制

开发工具与关键技术:Java
作者:吴永旗
撰写时间:2019年4月26日

  1. 什么是java类加载机制?
    JVM把class文件加载到内存中,并对数据进行验证,解释和初始化,最终形成JVM可以直接使用的Java类型过程。

  2. 获取类加载器,关键字ClassLoader,通过“类名+class+getClassLoader”获取类加载,
    类的加载有三种方法
    方法一: (ClassLoader loader).loadClass(String name)
    方法二:Class.forName(String name)
    方法三:Class.forName(String name,Bollean initialize, ClassLoader loader)
    package com.gx.demo2;
    public class Personson {
    public static void main(String[] args) {
    //获取类加载器
    ClassLoader load=Personson.class.getClassLoader();
    //类的加载有三种方法
    //com.gx.demo2包名,Demod类名
    load.loadClass(“com.gx.demo2.Demod”);方法一,不会初始化块 Class.forName(“com.gx.demo2.Demod”);方法二,默认初始化块
    Class.forName(“com.gx.demo2.Demod”, true, load);参数:类名,是否初始化块,加载类
    }
    }
    class Demod{//需要加载的类
    static{
    System.out.println(“ClassLoader类加载器”);
    }
    }

  3. 什么是Java反射机制?
    简单的理解为对于任意一个类,我们到可以通过反射机制获取该类的所有属性和方法,对于一个对象,都可以调用其所有方法和属性(包括私有的)。
    Class类常用类方法有:

  4. forName(String className) 返回给定字符串名的类或和接口相关class对象的

  5. getClassLoader()返回该类的类加载器

  6. getConstructors()返回 Constructor对象的数组,代表类声明的所有公共构造方法

  7. getDeclaredConstructors()返回 Constructor对象的数组,代表类声明的所有私有公共构造方法

  8. getFields()返回该类对象所声明的所有的字段

  9. getDeclaredFields()返回该类对象所声明的所有私有的字段

  10. getMethods()返回该类对象的所有方法

  11. getDeclaredMethods()返回该类对象的所有私有方法

  12. SetAccessible(true) 用于打破封装,设置访问

  13. 例如:反射一个Dome类
    Java类加载机制和反射机制 思路:首先要通过反射机制获取Dome类的加载器,获取加载类方法(包名+类名),然后通过反射机制获取所有构造器,方法名和成员变量,最后通过反射机制调用构造器实例化一个类的对象,调用普通方法和设置成员变量等;

  14. 反射所有构造器
    显示反射机制获取所有构造器如下首先获取类加载器和加载方法,通过getDeclaredCoustructors()方法获取所有构造器存放于定义的Constructor<?>[]数组中,通过for循环遍历所有构造,然后按照“修饰符+名称+构造器形参列表类型”通过字符串拼接而成,结果如下所示
    Java类加载机制和反射机制2.反射所有方法
    显示反射机制获取所有方法,通过getDeclaredMethod()方法获取所有方法存放于定义的Method[]数组中,通过for循环遍历所有方法,然后按照“修饰符+返回值+名称+方法形参列表类型”通过字符串拼接而成,结果如下所示
    Java类加载机制和反射机制3.反射所有成员变量
    显示反射机制获取所有成员变量,通过getDeclaredField()方法获取所有成员变量
    存放于定义的Field[]数组中,通过for循环遍历所有成员变量,然后按照“修饰符+返回值+名称”通过字符串拼接而成,结果如下所示

Java类加载机制和反射机制4.通过发射机制调用构造器实例一个对象和调用一个普通的方法
显示如下:
Java类加载机制和反射机制
Java类加载机制和反射机制