有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

程序集Java ASM多次访问一个方法

我正在经历许多课程,并对它们进行改造。有些课程在我第一次访问时没有足够的信息,因此我需要重新访问它们。因为我在第一次通过时不知道是否需要重新访问,所以我复制了第一次修改后的完整类

我想知道的是,是否有可能在ClassWriter中重新访问一个方法并覆盖该方法

byte[] b...
ClassReader cr = new ClassReader(b);
ClassWriter cw = new ClassWriter(read,0);
ClassAdapter ca = new ClassAdapter(cw);//First pass
cr.accept(ca,0);
ClassAdapter ca2 = new ClassAdapter(cw);//Second Pass
cr.accept(ca2,0);

此代码的结果将给出由于重复字段而导致的验证错误&;方法声明


共 (1) 个答案

  1. # 1 楼答案

    您必须使用从cw读取的新字节码初始化新的类读取器toByteArray()。从这里开始,您将重复其他步骤(新建ClassWriter、新建ClassAdapter等)