当我自己的另一个项目中的一个类文件被IntelliJ(by Fernflower de-compiler)反编译时,我惊叹于反编译后的代码与源代码相比的紧密程度,甚至方法局部变量名称都与原始代码相同源代码。我对Java编译过程如何工作以及JVM如何工作一无所知,我天真的理解是公共东西的名称在编译后可能需要保留,但是局部变量的名称,它们只是为了方便记忆人类阅读,在其范围之外完全无用,而且我认为 JVM 不需要这些信息。那么,这些信息是反编译器通过某种魔法简单地找出来的,还是编译后的类保留了大量信息,有何用处?
添加回答
举报
0/150
提交
取消