企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### ClassLoader ### 自定义类加载器:继承抽象类ClassLoader并重写findClass\(\)方法 ``` public Class<?> loadClass(String name) throws ClassNotFoundException { return loadClass(name, false); } protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { synchronized (getClassLoadingLock(name)) { // 查找该 class 是否已经被加载过 Class<?> c = findLoadedClass(name); // 如果没有加载过 if (c == null) { // 委托给父加载器去加载,递归调用 if (parent != null) { c = parent.loadClass(name, false); } else { // 如果父加载器为空,查找 Bootstrap 是否加载过 c = findBootstrapClassOrNull(name); } // 若果依然加载不到,则调用自己的 findClass 去加载 if (c == null) { c = findClass(name); } } if (resolve) { resolveClass(c); } return c; } } protected Class<?> findClass(String name){ //1. 根据传入的类名 name,到在特定目录下去寻找类文件,把.class 文件读入内存 ... //2. 调用 defineClass 将字节数组转成 Class 对象 return defineClass(buf, off, len); } // 将字节码数组解析成一个 Class 对象,用 native 方法实现 protected final Class<?> defineClass(byte[] b, int off, int len){ ... } ``` ####常用方法 #### ![](https://img.kancloud.cn/ad/1f/ad1faec49fd3158bda99197aa3ee9ce7_857x293.png)