java - 反编译后的代码与原始代码不同

标签 java decompiler

我使用jd-gui反编译了一个.jar文件并检查了代码,发现它与原始.java文件不同。

  • 原始代码

    if ( total != 0 ) {
        result[ i ] = bdResult.multiply( bdItem ).divide( bdTotal, 0,
        RoundingMode.DOWN ).setScale( 0, RoundingMode.DOWN ).intValue();
    }
    
  • 反编译代码

    if (total == 0)
      continue;
    result[i] = bdResult.multiply(bdItem).divide(bdTotal, 0, 
    RoundingMode.DOWN).setScale(0, RoundingMode.DOWN).intValue();
    

为什么会发生这种情况?

此外,反编译的代码似乎有语法错误(大括号在哪里?)

最佳答案

仅仅通过反编译是不可能得到原始代码的,因为不同的代码可能会导致相同的java字节码语句。但是,您将获得一个等效版本,它执行与原始版本完全相同的操作。

关于java - 反编译后的代码与原始代码不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47011554/

相关文章:

java - 在 ArrayList 中查找最大数

Java spring忽略请求中的字段

java - 有没有办法在 Eclipse 下的 GAE Java 开发服务器上禁用对 Runtime.checkRestricted 的调用?

java - 您可以反编译任何 .jar,这不是很奇怪\不安全吗?

java - 在 jar 中附加一些类的源代码

java - 如何防止我的类被反编译

java - 使用 Jode 反编译*任何*类时遇到问题

java - 如何使用 spring 存储库构建业务对象?

java - Vaadin7 如何从服务器下载文件?

c# - 如何使 Reflector 不被新语法阻塞