나는 다음과 같은 클래스에게 그것은 다음과 같은 사용와 Javassist - 방법에 대한 필드 액세스 (작동하지 않습니다) 리디렉션
public class Booking{
public String name;
public String comment;
public String session;
public void test(){
this.name = "hi";
}
}
나는 악기가 :
:이 호출 할 때 지금cc.instrument(new ExprEditor(){
public void edit(FieldAccess arg) throws CannotCompileException {
if (arg.isWriter()) {
StringBuffer code = new StringBuffer();
code.append("$0.");
code.append(arg.getFieldName());
code.append("=$1.toUpperCase();");
arg.replace(code.toString());
}
}
});
을
Booking b = new Booking();
b.name = "hello";
System.out.println(b.name); // Edited correction
b.test();
System.out.println(b.name);
나에게
hello // Externally, doesn't.
HI // Internally, works as expected
01을 제공합니다
무엇이 누락 되었습니까? 그것은 내가 쉽게 성취 할 수 있어야하는 것들 중 하나처럼 보입니다.
모든 클래스에서 blanket "fieldAccess.replace"를 수행해야한다고 말하지 마십시오. O.O
첫 번째 인쇄물이 ""대신 println (b.name)으로되어 있습니까? –
예. 고마워요 @ PeterLiljenberg –