Java 自定义ClassLoad
来源:互联网 发布:淘宝网黄金首饰 编辑:程序博客网 时间:2024/06/07 01:58
public class DiyClassLoad extends ClassLoader { public Class loadClass(String name, boolean resolve) throws ClassNotFoundException { Class clazz = null; try { clazz = findLoadedClass(name); if (clazz != null) { return clazz; } byte[] bs = getClassBytes(name); if (bs != null && bs.length > 0) { clazz = defineClass(name, bs, 0, bs.length); } if (clazz == null) { clazz = findSystemClass(name); } if (resolve && clazz != null) { resolveClass(clazz); } } catch (IOException e) { throw new ClassNotFoundException(e.toString()); } System.out.println("calzz == " + clazz); return clazz; } private byte[] getClassBytes(String className) throws IOException { String path = System.getProperty("java.class.path") + File.separator; path += className.replace('.', File.separatorChar) + ".class"; System.out.println(path); FileInputStream fis = null; try { fis = new FileInputStream(path); } catch (FileNotFoundException e) { System.out.println(e); return null; } byte[] bs = new byte[fis.available()]; fis.read(bs); return bs; }}
public class DiyObject { public void print(String str) { System.out.println("this is DiyObject!"); System.out.println(str); } public String toString() { return "this is DiyObject!"; } public static void main(String[] args) throws Exception { DiyClassLoad loader = new DiyClassLoad(); Class c = loader.loadClass("com.***.tom.test.classload.DiyObject", false); Object o = c.newInstance(); Method m = c.getMethod("print", java.lang.String.class); m.invoke(o, "just test for calssload !"); }}
系统的3个类加载器分别为:
1. Bootstrap CLassloder
2. Extention ClassLoader
3. AppClassLoader
加载器获取的是Class
参考资料:
http://blog.csdn.net/ggjjzhzz/article/details/321292
http://www.cnblogs.com/editice/p/5420712.html
0 0
- Java 自定义ClassLoad
- java classload 机制
- java classload 机制 详解
- java classload类 源码
- java ClassLoad详解
- java 类加载ClassLoad
- Java ClassLoad详解
- classload
- Classload
- 自定义classload加载自定义的class文件
- java 的运行机制之classload
- java 反射中的classload方式
- (转)java classload 机制 详解
- java的ClassLoad的重载实现
- java的classload机制--Tomcat 5
- classload之java程序入口sun.misc.Launcher源码分析
- tomcat classload
- classload装载
- 厉曼婷
- oracle 全文检索--多列(二)
- <操作系统:精髓与设计原理> 计算机安全
- LeetCode113 Path Sum II
- LeetCode112 Path Sum
- Java 自定义ClassLoad
- poj 3070 斐波拉切快速幂公式
- LeetCode114 Flatten Binary Tree to Linked List
- Android 开发 Tip 7 -- volatile & synchronized
- java中字符流一次到底读几个字节?
- this关键字
- Caffe依赖包解析
- Linux(2)-目录,文件,链接处理命令
- Redis主从复制 问题