와 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");
당신이 당신에 대해이 튜토리얼을 here 트릭을 읽어야 Javassist
를 사용하여 호를 모르는 경우 모든 필드 참조가 참조에 대한 CtField
필드에 대한 모든 참조를 대체하는 CodeConverter
를 사용하여 수행됩니다 "재배 선" NameID
이라는 필드에 ctClass
을 입력하십시오. 필드 이름을 NameID
으로 변경하기 전에이 작업을 수행해야합니다.
그러나 모든 참조가 업데이트되지만 set/get 메서드 이름은 여전히 getMessageID
및 setMessageID
입니다. 다음과 같이 동일한 참조 번호 ctClass
을 사용하여 쉽게 변경할 수 있습니다.
CtMethod getter = ctClass.getDeclaredMethod("getMessageID");
getter.setName("getNameId");
CtMethod setter = ctClass.getDeclaredMethod("setMessageID");
setter.setName("setNameId");