JVM加载机制详解(14)

2023-05-02 来源:飞速影视
接下来就是自定义我们的类加载器:
public class MyClassLoader extends ClassLoader { private String codePath; public MyClassLoader(ClassLoader parent, String codePath) { super(parent); this.codePath = codePath; } public MyClassLoader(String codePath) { this.codePath = codePath; } @Override protected Class<?> findClass(String name) throws ClassNotFoundException { //1.字节码路径 String fileName = codePath name ".class"; // 2.获取输入流 // 3.获取输出流 try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(fileName)); ByteArrayOutputStream baos = new ByteArrayOutputStream()) { // 4.io读写 int len; byte[] data = new byte[1024]; while ((len = bis.read(data)) != -1) { baos.write(data, 0, len); } // 5.获取内存中字节数组 byte[] byteCode = baos.toByteArray(); // 6.调用defineClass 将字节数组转成Class对象 Class<?> defineClass = defineClass(null, byteCode, 0, byteCode.length); return defineClass; } catch (Exception ex) { ex.printStackTrace(); } return null; }}
最后运行结果如下:
我是由com.ymj.jvm01.c5_code.MyClassLoader类加载器加载 的
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号