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メソッドの名前はまだgetMessageID
とsetMessageID
です。
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");