目录
热加载简单来说就是在程序运行时可以重新加载之前经过编译转换后的类,Java并不支持热加载,因为我们编写的代码文件,也就是.java文件在加载前首先被Java编译器编译成.class文件,当程序执行需要使用到这个类时,会将它的.class文件加载到JVM里,通过类加载器读取这些.class文件后,转化成类实例,即可以生成类的对象。对于同一个类来说,JVM只会把它加载一次,加载完成后也不能把它删除掉,如果我们想要在运行过程中删掉这个类,替换一个新版本的class类,类加载器显然无法帮我们实现,但是,想要实现类热加载,可以重写ClassLoader,在里面写我们自己的替换逻辑。
热加载逻辑
实现热加载我们可以创建一个自己的类加载器,继承自ClassLoader,然后重载findClass()方法,加载我们需要进行热加载的类时,在提供的路径下面搜索,找到后使用自己的ClassLoader来创建类的对象。
自定义ClassLoader
public class MyClassLoader extends ClassLoader {
private String className;
public MyClassL