程序集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
读取的新字节码初始化新的类读取器toByteArray()。从这里开始,您将重复其他步骤(新建ClassWriter、新建ClassAdapter等)