2016-11-01 4 views
0

Je suis nouveau à Java et Javassist. Je voudrais ajouter un logger avant chaque accès en lecture sur une de mes variables primitives dans certaines méthodes. Après quelques recherches, je suis venu avec ce code:Instaurementer Javassist

try { 
method.instrument(
     new ExprEditor() { 
      public void edit(FieldAccess fa) throws CannotCompileException { 
       CtField field = null; 
       CtClass fieldType = null; 
       try { 
        field = fa.getField(); 
        fieldType = field.getType(); 
       } catch (NotFoundException e) { 
        e.printStackTrace(); 
       } 
       if (fa.isReader() && field != null && fieldType.isPrimitive()){ 
        System.out.println("Primitive found: " + field.getName()); 

        //ToDo: call method before variable access 
        fa.replace("{ $_ = $proceed($$); }"); 
       } 
      } 
     } 
    ); 
} catch (CannotCompileException e) { 
    e.printStackTrace(); 
} 

Est-il possible d'appeler une méthode (enregistreur) avant la variable est accessible, ou dois-je résoudre ce d'une manière différente? Quel est le meilleur moyen d'y parvenir en utilisant Javassist?

quelqu'un l'espoir peut me aider :)

Répondre

0

Vous pouvez utiliser l'objet enregistreur normale pour appeler les méthodes de l'enregistreur. Mais assurez-vous de donner le chemin de la classe jar dans le fichier manifeste.