字节码工具asm使用的一个例子

[url="http://asm.ow2.org/"]ASM[/url] 是一个 Java 字节码操控框架。它能够以二进制形式修改已有类或者动态生成类。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。

初识字节码,现学现卖。
示例中演示的功能:

[list]
[*]生成被代理类的子类,并重写所有方法(除java.lang.Object类定义的方法),增加before和after拦截。
[*]重新定义被代理类的所有属性(不包括属性的赋值)。
[*]把生成的class文件保存到硬盘中。
[*]从内存中加载新生成的class。
[/list]

jdk自带的代理(InvocationHandler)的不足:

[list]
[*]jdk只能代理接口(被代理的类必须实现至少一个接口)。
[*]jdk提供的代理方法,不能拦截同一类中方法的调用。eg.A.method1(){this.method2();}此时method2将不会被拦截。
[/list]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值