`
mazzystar
  • 浏览: 26396 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

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

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

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


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

  • jdk只能代理接口(被代理的类必须实现至少一个接口)。
  • jdk提供的代理方法,不能拦截同一类中方法的调用。eg.A.method1(){this.method2();}此时method2将不会被拦截。
  • asm_demo.zip (204.3 KB)
  • 描述: asm的实现类
  • 下载次数: 448
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics