gpt4 book ai didi

java - 使用ASM创建方法

转载 作者:行者123 更新时间:2023-12-01 18:06:36 25 4
gpt4 key购买 nike

使用ASM,我需要修改一个方法,然后需要向其中插入两个方法。我已经完成了修改,但是如何创建一个方法呢?我是否需要一个单独的 MethodVisitor,或者我可以使用同一个,但调用其他东西吗?

最佳答案

需要在对应的ClassWriter上调用visitMethod,为每个方法创建一个新的MethodVisitor。

MethodVisitor 不能重复使用。如果要将方法插入现有类中,通常可以通过读取原始类文件的 ClassVisitor 的访问结束方法来执行此操作。

这种转换的示意图如下所示:

class TransformingClassVisitor extends ClassVisitor {
TransformingClassVisitor(ClassVisitor cv) { super(Opcodes.ASM5, cv); }

@Override
public MethodVisitor visitMethod(int opcode, String name, String owner, String desc, String signature, boolean iFace) {
MethodVisitor mv = super.visitMethod(opcodes, name, owner, desc, signature, iFace);
if (<isTransformedMethod>) {
return new TransformingMethodVisitor(mv);
}
return mv;
}

@Override
public void visitEnd() {
MethodVisitor m1 = super.visitMethod(<firstMethod>);
implement1(m1);

MethodVisitor m2 = super.visitMethod(<secondMethod>);
implement1(m2);

super.visitEnd();
}
}

关于java - 使用ASM创建方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35965169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com