java反编译相关
字符串replace问题某系统升级后并不是向下兼容的,新系统在运行后,自定义的模块一直报错NoSuchMethodException,查阅代码发现该方法属于在旧系统中存在但是新系统中移除的一个方法,为保证自定义模块继续执行,需要反编译新系统的源码添加该方法来适配自定义的调用。但在某个类的反编译结果中出现了一个很奇怪的现象。该段代码通过jd-gui反编译的结果如下:
123String a;...a.replace(false, '1');
已知String类没有首个参数为布尔值的replace方法,不做修改的话编译肯定是无法通过的。根据经验,猜测应该是原字符转成数字之后,jd-gui又转成布尔值了,而表示成布尔值之后为false的数,按理来说是0。于是使用java的命令行反编译工具javap,反编译结果如下:
1javap -c -v Trace.class > Trace.txt
1234: iconst_05: bipush 497: invokevirtual #3 // Method java/lang/String.repla ...