动态构造 Java 类的一种方法: ClassLoader 的设计 (4)

原创 2007年09月26日 11:48:00

http://blog.csdn.net/loveyly/archive/2007/09/21/1794927.aspx 第一部分
http://blog.csdn.net/loveyly/archive/2007/09/21/1794971.aspx 第二部分
http://blog.csdn.net/loveyly/archive/2007/09/25/1799733.aspx 第三部分

对于ClassLoader 的设计, 可以按照如下的思路进行:
1. 首先检测缓存中是否存在该className的key(注意是存在key, 可以参考我以前的一片文章http://blog.csdn.net/loveyly/archive/2007/09/19/1791577.aspx), 如果存在, 则直接返回;
2. 否则使用 parent ClassLoader (一般是当前线程的上下文ClassLoader)查找该类, 如果找到, 放入缓存, 返回;
3. 如果没有, 使用获取对象描述, 使用javassist动态构造类, 并使用本ClassLoader 实例装载该类, 然后返回;
4. 实现一个destroy 方法, 负责清空缓存并调用 Introspector.flushCaches() (负责清空bean的一些缓存).

当更新一个对象描述时, 需要重新使用一个 ClassLoader 实例, 并调用先前的ClassLoader的destroy方法, 让其被垃圾回收. 

相关文章推荐

字节码操作_javassist库_动态创建新类_属性_方法_构造器_API详解JAVA216-217

字节码操作_javassist库_动态创建新类_属性_方法_构造器_API详解JAVA216-217

Java基础-构造函数,覆写父类方法,多态及动态绑定,抽象类和Object类的运用

Java构造函数,覆写父类方法,多态及动态绑定,抽象类和Object类的运用

关于java中子类,父类中,静态代码块: staic{},动态代码块:{},构造方法,类属性,对象属性等执行顺序做个总结:

关于java中子类,父类中,静态代码块: staic{},动态代码块:{},构造方法,类属性,对象属性等执行顺序做个总结:...

java后台构造easyui的tree数据的一种方法

最近在用easyui做一个权限管理系统,需要用到tree,后台构造json数据的时候总是不能很好的适应各种 情况,于是上网看了很多的例子,有几个能用,效率也比自己写的高,然后再加上自己的的业务需求改写...

Java运行时动态加载类之ClassLoader加载class及其依赖jar包

需求场景是:通过ClassLoader动态加载外部class文件,class文件又依赖某个具体jar包,需要动态加载jar包,采用URLClassLoader。 1、xml配置文件 ...

Java构造方法私有化-->单例模式-->Runtime类的设计

在学了Java这么久的过程中,发现构造方法私有化,即用private修饰符修饰构造方法,那么这个类就不能用new进行实例化,否则会报错。既然不能用new进行实例化,那么能产生该类的实例么?这种设计难道...

Java - 类 - 对象 - 方法 - 构造器 - 面向对象程序设计三大特性

类 [java] view plain copy 类是一种抽象概念,类中包含了数据和对数据的操纵     数据通常使用名词表示,对数据的操纵通常使用动词表...

Java 反射:Class类,动态加载类获取方法和成员变量构造信息,方法反射的基本操作,集合泛型的本质

概述 1.Class类   1) 在面向对象的世界里,万事万物皆对象。(java语言中,静态的成员、普通数据类型除外)            类是不是对象呢?类是(哪个类的对象呢?)谁的对象呢? ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态构造 Java 类的一种方法: ClassLoader 的设计 (4)
举报原因:
原因补充:

(最多只允许输入30个字)