2012-04-08 9 views
1

皆さん。Javassistでメソッドの修飾子を削除できますか?

私はクラスファイルを持っています。

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

私はJavassistのを使用して、それを実装することができ

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

にそれを変更したいですか? 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)を使用することをお勧めします。 。 –

関連する問題