反编译Java文件后出错
我尝试反编译一个Java文件,但反编译给我的不是确切的代码,而是使用goto语句和标签的代码
现在我想提取使用过的代码。有人能帮忙吗
@Override
public int getItemViewType(int i)
{
int j = 1;
if (!displaySearchField || i != 0) goto _L2; else goto _L1
_L1:
j = 0;
_L4:
return j;
_L2:
int k = i;
if (displaySearchField)
{
k--;
}
if (!(items.get(k) instanceof Group))
{
continue; /* Loop/switch isn't completed */
}
if (displaySearchField) goto _L4; else goto _L3
_L3:
return 0;
if (!displaySearchField) goto _L4; else goto _L5
_L5:
return 2;
}
# 1 楼答案
永远不要信任反编译器的输出。即使它编译得很干净。即使您可以对原始版本和往返版本运行相同的单元测试套件,并获得相同的结果
决不要试图手动“修复”反编译代码的问题。如果你发现自己在想,“嗯,这看起来几乎是对的……我想我能解决这个问题,”停下来。不要那样做
真诚地
写过反编译器的人
# 2 楼答案
不能使用反编译代码。在编写代码之后,当它被编译时,一些代码由 安卓也是。当你进行反编译时,你会得到一个改变的信息。所以你会犯错误