ASM Core Api 详解
前言 前面一篇文章 ASM 简介 对 ASM 框架做了简单的介绍。 本篇文章主要对该框架的 Core Api 其中重要的一些类进行详细的介绍,让大家可以更得心应手的使用 ASM。 在开始之前,让我们先回顾一下 ASM Core Api 调用流程: ASM 提供了一个类ClassReader可以方便地让我们对class文件进行读取与解析; ASM 在ClassReader解析class文件过程中,解析到某一个结构就会通知到ClassVisitor的相应方法(eg:解析到类方法时,就会回调ClassVisitor.visitMethod方法); 可以通过更改ClassVisitor中相应结构方法返回值,实现对类的代码切入(eg:更改ClassVisitor.visitMethod()方法的默认返回值MethodVisitor实例,通过操作该自定义MethodVisitor从而实现对原方法的改写); 其它的结构遍历也如同ClassVisitor; 通过ClassWriter的toByteArray()方法,得到class文件的字节码内容,最后通过文件流写入方式覆盖掉原先的内容,实现class文件的改写。 以上,就是 ASM Core Api 的整体运作流程。 接下来,我将对其中涉及到的重要的类进行详细解析。 ClassReader ClassReader