2011-02-24 2 views
1

Je travaille sur plusieurs classes et je les transforme. Il y a des classes pour lesquelles je n'ai pas assez d'informations quand je les visite pour la première fois, et à ce titre, je dois les revoir. Puisque je ne sais pas au moment de la première passe si j'ai besoin de revisiter, je copie la classe complète avec le premier passage de modifications.Java ASM Visiter une méthode plusieurs fois

Ce que je veux savoir est s'il est possible de revenir sur une méthode et remplacer la méthode dans le 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); 

Le résultat de ce code va me donner des erreurs de vérification en raison de reproduire le champ & déclarations de méthode.

Répondre

1

Vous devez initialiser un nouveau ClassReader en utilisant le nouveau bytecode lu à partir de cw. toByteArray(). De là, vous répétez les autres étapes (nouveau ClassWriter, nouveau ClassAdapter, etc.)

Questions connexes