2011-02-24 48 views
1

我正在通过很多类来转换它们。有一些课程我没有足够的信息,当我第一次访问它们时,我需要重新访问它们。由于我不知道第一遍是否需要重新访问,因此我会在第一遍修改后复制完整的课程。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

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