Java ASM:多次访问方法

3

我正在处理许多课程并对它们进行转换。有些课程在我第一次访问时没有足够的信息,因此我需要重新访问它们。由于我不知道在第一遍通过时是否需要重新访问,所以我会复制完整的类和第一遍修改。

我想知道是否可以重新访问一个方法并在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个回答

2
您需要使用cw读取的新字节码来初始化一个新的ClassReader。然后,您需要重复其他步骤(新的ClassWriter、新的ClassAdapter等)。请参见:toByteArray()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接