动态构造 Java 类的一种方法: javassist (1)

原创 2007年09月21日 16:35:00

http://labs.jboss.com/javassist/
这个Jboss 的项目可以动态的构造 Java 类, 其功能算是比较强大的了. 但是任何强大的东东都是双刃剑, 那就如果很好的运用, 可以大大的提升系统的灵活性, 可扩展性和性能; 如果使用不当,对系统的冲击也是很大的.

这里我不介绍具体的开发方法(可以到上面的网址去获取开发文档), 我会从其使用的场景, 系统层次等方面介绍怎样才算是很好的使用这个技术. 首先我介绍一些使用原则:

1. 动态构建 Java 类, 跟反射机制一样, 其强大, 但是不能滥用. (我先前写一了篇文章介绍反射的一个使用原则.) 动态构建 Java 类也最好跟反射机制一样只使用在模块内部, 不要跨模块调用. 比如, 模块A需要使用模块B 的一个类, 那么就将这个类在 模块 B 中生成好, 传递给模块A; 不要通过模块A 去生成 这个类.

2. 使用 动态类生成技术, 最好只针对一些简单的 java 对象, 比如 Java Bean. 最好不要通过这种技术去生成逻辑处理类.

3. 基于第二点, 其生成类所依赖的其他类最好是 JDK 自带的. 如果依赖应用本身的其他类, 最好也是简单的java对象.

4. 注意资源的释放. 我们可能会不断的生成类, 那么就需要注意, 是否需要释放这些类. 比如某个类应该是动态变化的, 在新的类生成后, 就应该将以前的那个释放掉. 确保没有内存泄露等问题. 

java 利用Constructor动态创建构造函数带有参数的类

package first;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetExceptio...
  • alusc
  • alusc
  • 2009年08月14日 09:06
  • 3162

Java动态生成类以及动态添加属性

有个技术实现需求:动态生成类,其中类中的属性来自参数对象中的全部属性以及来自参数对象propertities文件。   那么技术实现支持:使用cgilib代理。   具体的实现步骤:   1.c...

Java 动态生成类和实例, 并注入方法

Java官方支持的, 必须要有接口才行 import java.lang.reflect.Constructor; import java.lang.reflect.InvocationHa...

Java动态创建类

Java可以创建动态类,学习看到,此处作为笔记。 代码如下: import java.io.IOException; import java.lang.reflect.Method; import...

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

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

Java 编程的动态性, 第四部分: 用 Javassist 进行类转换

用 Javassist 转换字节码中的方法 厌倦了只能按编写好源代码的方式执行的 Java 类了吗?那么打起精神吧,因为您就要发现如何将编译器编译好的类进行改造的方法了!在本文中...

Java 编程的动态性, 第四部分: 用 Javassist 进行类转换

http://www.ibm.com/developerworks/cn/java/j-dyn0916/ Dennis M. Sosnoski (dms@sosnoski.com), 总裁, S...

Java 编程的动态性, 第4部分: 用 Javassist 进行类转换

讲过了 Java 类格式和利用反射进行的运行时访问后,本系列到了进入更高级主题的时候了。本月我将开始本系列的第二部分,在这里 Java 类信息只不过是由应用程序操纵的另一种形式的数据结构而已。我将这个...
  • yczz
  • yczz
  • 2013年11月07日 22:49
  • 1276

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

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

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

关于java中子类,父类中,静态代码块: staic{},动态代码块:{},构造方法,类属性,对象属性等执行顺序做个总结:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态构造 Java 类的一种方法: javassist (1)
举报原因:
原因补充:

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