我正在尝试在方法主体中将字段引用动态替换为另一个字段引用。 bytebuddy有可能吗?
我要转换的类是这样的:
public class TestReplace {
@replace
int a = 1;
int b = 2;
public int printA() {
return a;
}
public int printB() {
return b;
}
}
转换包括在访问它们的方法中替换标有@replace的变量。替换将由我要插入的变量完成。
已转换的类应如下所示:
public class TestReplace {
@replace
int a = 1;
int ___a = a * 10; // var inserted
int b = 2;
public int printA() {
return ___a;
}
public int printB() {
return b;
}
}
我是这个学科的新手,非常感谢您能为我提供的帮助。
预先感谢
答案 0 :(得分:0)
是的,可以使用MemberSubstitution
:
MemberSubstitution.relaxed()
.field(ElementMatchers.named("a"))
.onRead()
.doReplaceWith(otherField)
例如,您可以从使用AgentBuilder
API定义的Java代理中应用此转换。您可能还需要从该代理定义替代字段。您可以使用FieldDescription.Latent
来引用此字段。