我们说我有这样的课程:
.text
现在何时会调用.txt
?是在Java中发生类加载的时候(那是调用类访问者的地方?)还是在类对象上调用方法时?
我对此感到困惑。
答案 0 :(得分:2)
visitMethod
。这与JVM中的类加载或执行完全无关。
ASM使用访客模式。您传入一个实现您感兴趣的回调的类,然后将其传递给类似ClassNode.accept(cv)
的类,ClassNode将自动为类文件的相应部分调用所有回调。
答案 1 :(得分:0)
通常,您将ClassVisitor
链接到ClassReader
,它会读取给定的类并触发所有visit*
方法
ClassReader cr = new ClassReader(className);
cr.accept(new ClassPrinter(), 0);
当您想要阅读课程(并打印方法名称)时,完全取决于您。
如果你想转换一个类并将它加载到JVM,那么可能是子类ClassLoader
,在那里读取类,转换它(使用{{1方法),并用visit*
编写。从某些代码示例中查看ASM的ClassWriter
文件夹(例如examples
)。