java的动态性------Java字节码操作,
分享于 点击 33826 次 点评:248
java的动态性------Java字节码操作,
常见的字节码操作类库
BECL :是java classing广泛使用的一种框架,可以深入理解JVM汇编语言,难学,需要一些JVM底层指令
ASM :轻量级的java字节码操作框架,直接涉及JVM底层操作和指令
CGLIB :是基于ASM的的实现,强大性能高
Javassist :开源简单 支持java level 和bytecode level来操作字节码 简单,性能相对BECL,ASM性能低下,和CGLIB差不多
(1) AOP Javassist 是一个很好的工具实现AOP,动态修改方法,给方法中的一行前面后面或者both添加代码
(2) Reflection Javassist 里面的很多方法和Reflection中一样 CtField对应Field CtMethod 对应Method。还有 就是你在动态的加入了新的方法或者修改方法之后,通过一般的new创建对象是调用不到的,所有通过反射对象来调用。
Javassist 缺点:不支持泛型 枚举 不能修改注解 不支持内部类 匿名类 不支持数组的初始化 不支持continue break也不能支持某些继承
相关文章
- 暂无相关文章
用户点评