美文网首页
43 - ASM之asm-util和asm-commons

43 - ASM之asm-util和asm-commons

作者: 舍是境界 | 来源:发表于2022-02-23 07:08 被阅读0次

asm-util

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

ASM Util
  • 其中,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 Common示意图

那么,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两者有什么区别。

相关文章

网友评论

      本文标题:43 - ASM之asm-util和asm-commons

      本文链接:https://www.haomeiwen.com/subject/jerwlrtx.html