Javassist:替换调用中的访问方法参数

问题描述

我在方法调用内替换了一条语句,我想知道是否可以从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 (将#修改为@)