2012-04-08 2 views
1

jeder.Kann ich den Modifizierer einer Methode mit Javassist löschen?

Ich habe eine Klassendatei.

public class ClsSync { 
    public synchronized void biat(){ 
    }  
} 

Ich will es

public void biat(){ // delete the synchronized keyword 
} 

Kann ich es Javassist mit implementieren, um

zu ändern? Wie kann ich der Methode einer Klassendatei mit javassist eine Annotation hinzufügen? Irgendwelche Vorschläge sind willkommen! Dank

Antwort

0

Dies sollte den Trick

ClassPool cp = ClassPool.getDefault(); 
    CtClass cc = cp.get("ClsSync"); 

    CtMethod cm = cc.getDeclaredMethod("biat"); 
    cm.setModifiers(Modifier.PUBLIC); 

Nur CtMethod#setModifiers() verwenden, um die erforderliche Maske einzustellen.

+1

Er könnte andere Flags unverändert lassen, dann wäre es besser cm.setModifiers (cm.getModifiers() & ~ Modifier.ABSTRACT) zu verwenden (entfernt den "abstrakten" Modifier, während alle anderen unverändert bleiben) . –

Verwandte Themen