ClassWriter 是ClassVisitor的一个实现类,它有两个构造函数
ClassWriter(int flags); // 全新创建一个class 文件
ClassWriter(ClassReader rd, int flags); // 基于一个现有class 文件,进行修改
flags的取值范围:
0 --- 这种方式不会自动计算操作数栈和局部临时变量表大小,需要自己手动来指定
ClassWriter.COMPUTE_MAXS(1) ---这种方式会自动计算上述操作数栈和局部临时变量表大小,但需要手动触发。
通过调用org.objectweb.asm.commons.LocalVariablesSorter#visitMaxs触发 参数可以随便写
ClassWriter.COMPUTE_FRAMES(2) ---这种方式不仅会计算上述操作数栈和局部临时变量表大小,而且会自动计算StackMapFrames