ASM-ClassWriter&ClassVisitor

  1. ClassWriter继承ClassVisitor
  2. 构造方法ClassVisitor(api,nextClassVisitor)

ClassVisitor构造方法是链表形式的,nextClassVisitor就是下一个节点ClassVisitor,链表最后一个节点为ClassWriter。
ClassVisitor1-> ClassVisitor2-> ClassVisitor3->ClassWriter

ClassVisitor的super方法默认实现方式就是调用nextClassVisitor方法,所以在默认情况下调用的都是ClassWriter。

因为ClassVisitor的链表关系导致MethodVisitor也为链表形式。
MethodVisitor1-> MethodVisitor2-> MethodWriter

只要链表没断,最后指向MethodWriter和ClassWriter的内部实现时,才会真正执行字节码改写逻辑。

所以增加,删除一个类或者方法,只要增加一个链路或断开一个链路即可

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在前面的文章中,我们分析了Class 这个字节码文件的格式,知道了字节码的作用,那么我们就可以直接生成字节码文件,...
    wo883721阅读 1,548评论 0 2
  • ASM简介 ASM是一个操作Java字节码类库,其操作的对象是字节码数据,处理字节码方式是“拆分-修改-合并”将....
    唯爱_0834阅读 1,683评论 0 1
  • AspectJ 非常强大,但是它也只能实现 50% 的字节码操作场景,如果想要实现 100% 的字节码操作场景,那...
    凯玲之恋阅读 1,130评论 0 4
  • 前言 很早之前就写过面向切面的编程思想,主要学习了AOP的思想(参考:AOP简介)以及使用 AspectJ 实现简...
    Whyn阅读 11,243评论 4 40
  • ClassReader类 ClassReader类和ClassWriter类,从功能角度来说,是完全相反的两个类,...
    舍是境界阅读 2,637评论 0 1

友情链接更多精彩内容