开发Java程序的人,很多都会用Java的反编译器来反编译找不到源代码的类,
很多时候反编译的效果很好,可是其实其中也会有暗藏的错误的,下面以使用
基于jad的Java反编译器Decafe Pro为例。
(其它反编译我没有试过,有兴趣的同道可以试试)
Java程序:
/**
* 测试++i
*/
public class Test {
public static void main(String[] args) {
int i=3;
i=(++i)+(++i);
System.out.println("i="+i);
}
}
运行结果为i=9
用Decafe Pro反编译,结果为
import java.io.PrintStream;
public class Test
{
public Test()
{
}
public static void main(String args[])
{
int i = 3;
i = i++ + i;
System.out.println("i=" + i);
}
}
编译,没有错误,看来一切都好啊。可是运行一下后就看出问题来啦:运行结果为i=7.
呵呵,好危险哦,看来一定要牢记:反编译结果仅供参考。
另:看来有时想保护自己的代码时来点这个也会把那些反编译的人整整的
如i=++i,写成i=(++i)+(++i)-i 反编译后变为i = (i++ + i) - i;
就迫使别人增加了反编译的成本。