Java反编译得到重复的局部变量

标签 java intellij-idea decompiler

Intellij IDEA 的反编译代码中,我看到以下代码:

public void someMethod(Map params)  {
    HashMap params;
    if (null == params) {
        params = new HashMap();
    } else {
        // ...
    }
}

由于两个原因,这段代码无法编译:

  • params 在 body 中重新声明,因此它是重复的局部变量。
  • 即使修复了上述问题,第二个params 仍未初始化。

问题

  • 为什么要这样反编译?

最佳答案

IntelliJ 使用自己的名为“Fernflower”的反编译器。这是一个GitHub .
它不是最好的反编译器,但它是一个活的,所以有时它有可能成为最好的。
同时,您可以使用 Eclipse ;)。真的有强大的反编译器plugin它支持多种不同的反编译器。
您也可以使用 Jar Explorer .这是一个独立的工具,具有三个反编译器,包括 Fernflower。

关于Java反编译得到重复的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57318766/

相关文章:

maven - 在 IntelliJ 或 Android Studio 中使用 HTTP 作为默认值

programming-languages - 是否有可能知道 exe 文件是用什么语言编写的?

java - 使用 selenium webdriver 下载图像

java - 将 pdf 文档从 asset 导入到 PdfDocument 对象中

java - 为什么 DL4J NLP 示例没有使用 Maven 获取 jar?

java - 在 Intellij 中使用 springloaded 重新加载类后断点不起作用

iphone - 反编译应用程序二进制文件以返回源代码

c - 使用 C 或 C++ 反编译 CHM(帮助)文件

java - 通过在命令行上指定多个 Maven 配置文件来堆叠属性

java - 使用 java dataflow-sdk 1.9.1 和 hbase 1.0.0 时,JVM 在退出时挂起(但对于以前的 hbase 库则不会)