问题描述
我在方法调用内替换了一条语句,我想知道是否可以从replace
调用内访问其方法参数。我通读了Javassist指南,但找不到有关它的任何信息。
请注意,我可以通过替换方法主体来实现此目的,但我更喜欢更简单的解决方案。
下面是一个例子:
void doSomething(boolean isValid) {
// many lines of code...
executeSomething(isValid ? withThis : orThat);
}
...
CtMethod cm = ctClass.getDeclaredMethod("doSomething");
cm.instrument(new ExprEditor() {
@Override
public void edit(MethodCall m) throws CannotCompileException {
if ("executeSomething".equals(m.getmethodName())) {
m.replace("{ $1 = booleanIsValid ? 1 : 2; $_ = $proceed($$); }");
}
}
});
如您所见,我想在替换中检索参数isValid
的值。
我希望在$args
调用内的replace
包含方法参数,但是不包含。
关于如何实现这一目标的任何建议?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)