0

这是一些代码。

static synchronized void q(ua paramua, int paramInt) {
try {
 if (d) { if (paramInt > -16711936);
   return; }
 if (q * 514194583 > 0) { if (paramInt > -16711936);
   abf localabf = new abf(paramua);
   n.d(localabf, -984409319);
 }
 else {
   paramua.ma(false);
 }
 return; } catch (RuntimeException localRuntimeException) { throw aht.d(localRuntimeException, "ck.q(" + 41);
}
}

static synchronized void b(ua paramua)
{
  if (d) return;
  if (q * 514194583 > 0) {
    abf localabf = new abf(paramua);
    n.d(localabf, -836239689);
  }
  else {
    paramua.ma(false);
  }
}

这两种方法执行相同的操作。第一种方法的第二个参数是psudo-argument,所以我想把原代码清空,把这个方法做成这样……

static synchronized void q(ua paramua, int paramInt)
{
  if (d) return;
  if (q * 514194583 > 0) {
    abf localabf = new abf(paramua);
    n.d(localabf, -836239689);
  }
  else {
    paramua.ma(false);
  }
}

我该怎么做这个动作?我试过这样。

destMethodNode.instructions.clear();
destMethodNode.instructions.add(srcMethodNode.instructions);

但抛出空指针异常。是什么原因?

4

1 回答 1

0

请参阅 ASM项目页面链接的 AOSD'07 论文的“将两个类合并为一个”部分。它提供了如何正确使用 MethodNode 将方法的字节码复制到另一个方法的示例。

于 2012-06-21T16:13:04.640 回答