以下是一些代码。
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);
但抛出空指针异常。是什么原因?
答案 0 :(得分:0)
参见ASM project page链接的AOSD'07中的“将两个类合并为一个”部分。它提供了如何正确使用MethodNode将方法的字节码复制到另一个方法的示例。