2012-04-08 72 views
1

大家。我可以使用Javassist删除方法的修饰符吗?

我有一个类文件。

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

我想将其更改为

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

我可以用它实现了Javassist? 如何使用javassist将注释添加到类文件的方法中? 欢迎任何建议! 感谢

回答

0

这应该做的伎俩

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

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

只需使用CtMethod#setModifiers()设置所需要的掩。

+1

他可能想要保留原来的其他标志,那么使用cm.setModifiers(cm.getModifiers()&〜Modifier.ABSTRACT)会更好(删除“abstract”修饰符,同时保持原样) 。 – 2015-02-02 08:32:10

相关问题