Java ASM多次访问方法

时间:2011-02-24 22:05:16

标签: java assembly

我正在完成许多课程并对其进行改造。有些课程在我第一次访问它们时没有足够的信息,因此我需要重新访问它们。由于我在第一次通过时不知道如果我需要重新访问,我会通过第一次修改来复制完整的课程。

我想知道的是,是否可以重新访问方法并覆盖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 个答案:

答案 0 :(得分:1)

您必须使用从cwtoByteArray()读取的新字节码初始化新的ClassReader。从那里,你将重复其他步骤(新的ClassWriter,新的ClassAdapter等)