asm-util
在asm-util.jar当中,主要介绍CheckClassAdapter和TraceClassVisitor类。在TraceClassVisitor类当中,会涉及到Printer、ASMifier和Textifier类。

- 其中,CheckClassAdapter类,主要负责检查(Check)生成的.class文件内容是否正确。
- 其中,TraceClassVisitor类,主要负责将.class文件的内容打印成文字输出。根据输出的文字信息,可以探索或追踪(Trace).class文件的内部信息。
asm-commons
在asm-commons.jar当中,包括的类比较多,我们可以这些类可以分成两组,一组是ClassVisitor的子类,另一组是MethodVisitor的子类。
- 其中,ClassVisitor的子类有ClassRemapper、StaticInitMerger和SerialVersionUIDAdder类;
- 其中,MethodVisitor的子类有LocalVariablesSorter、GeneratorAdapter、AdviceAdapter、AnalyzerAdapter和InstructionAdapter类。

那么,asm-util.jar与asm-commons.jar有什么区别呢?在asm-util.jar里,它提供的是通用性的功能,没有特别明确的应用场景;而在asm-commons.jar里,它提供的功能,都是为解决某一种特定场景中出现的问题而提出的解决思路。
编程建议:在编写ASM代码的时候,如果写了一个类,它继承自ClassVisitor,那么就命名成XxxVisitor;如果写了一个类,它继承自MethodVisitor,那么就命名成XxxAdapter。通过类的名字,我就可以区分出哪些类是继承自ClassVisitor,哪些类是继承自MethodVisitor。
其实,将MethodVisitor类的子类命名成XxxAdapter就是参考了GeneratorAdapter、AdviceAdapter、AnalyzerAdapter和InstructionAdapter类的名字。但是,CheckClassAdapter类是个例外,它是继承自ClassVisitor类。
小结
本文对asm-util.jar和asm-commons.jar进行介绍,内容总结如下:
- 第一点,在asm-util.jar和asm-commons.jar当中,有哪些主要类成员。
- 第二点,asm-util.jar和asm-commons.jar两者有什么区别。
网友评论