2017-03-22 17 views

答えて

1

Javassistのを使用すると、フィールド名と新しいものに古いフィールド名からすべての参照を変更することができます。

ClassPool classpool = ClassPool.getDefault(); 
    CtClass ctClass = classpool.get(Sample.class.getName()); 
    CtField field = ctClass.getField("messageID"); 
    CodeConverter codeConverter = new CodeConverter(); 
    codeConverter.redirectFieldAccess(field, ctClass, "NameID"); 
    ctClass.instrument(codeConverter); 
    field.setName("NameID"); 

あなたはすべてのフィールド参照を「再配線」についてのトリックを参照のCtFieldフィールドへのすべての参照を置き換えますCodeConverterを使用して行われ、このチュートリアルhere をお読みくださいJavassist使用するホわからない場合NameIDというフィールドにctClassと入力します。フィールドの名前をNameIDに変更する前にこれを行う必要があることに注意してください。

ただし、参照はすべて更新されますが、set/getメソッドの名前はまだgetMessageIDsetMessageIDです。

CtMethod getter = ctClass.getDeclaredMethod("getMessageID"); 
getter.setName("getNameId"); 
CtMethod setter = ctClass.getDeclaredMethod("setMessageID"); 
setter.setName("setNameId"); 
次のような同じ参照を使用して簡単に変更することができます:

CtMethod getter = ctClass.getDeclaredMethod("getMessageID"); 
getter.setName("getNameId"); 
CtMethod setter = ctClass.getDeclaredMethod("setMessageID"); 
setter.setName("setNameId"); 
関連する問題