我正在完成许多课程并对其进行改造。有些课程在我第一次访问它们时没有足够的信息,因此我需要重新访问它们。由于我在第一次通过时不知道如果我需要重新访问,我会通过第一次修改来复制完整的课程。
我想知道的是,是否可以重新访问方法并覆盖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);
由于重复的字段和方法声明,此代码的结果将给出验证错误。
答案 0 :(得分:1)
您必须使用从cw
。toByteArray()读取的新字节码初始化新的ClassReader。从那里,你将重复其他步骤(新的ClassWriter,新的ClassAdapter等)