用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");
如果你不知道何用Javassist
你应该阅读本教程here 诀窍关于“重新布线”的所有字段引用使用CodeConverter
将替换为CtField
领域的所有引用的参考文献做到名为NameID
的字段ctClass
。请记住,在将该字段重命名为NameID
之前,需要完成此操作。
但是,您应该记住所有引用都已更新,但set/get方法名称仍为getMessageID
和setMessageID
。你可以很容易地改变,使用ctClass
相同的参考如下:
CtMethod getter = ctClass.getDeclaredMethod("getMessageID");
getter.setName("getNameId");
CtMethod setter = ctClass.getDeclaredMethod("setMessageID");
setter.setName("setNameId");