當我自己的另一個項目中的一個類文件被IntelliJ(by Fernflower de-compiler)反編譯時,我驚嘆于反編譯后的代碼與源代碼相比的緊密程度,甚至方法局部變量名稱都與原始代碼相同源代碼。我對Java編譯過程如何工作以及JVM如何工作一無所知,我天真的理解是公共東西的名稱在編譯后可能需要保留,但是局部變量的名稱,它們只是為了方便記憶人類閱讀,在其范圍之外完全無用,而且我認為 JVM 不需要這些信息。那么,這些信息是反編譯器通過某種魔法簡單地找出來的,還是編譯后的類保留了大量信息,有何用處?
添加回答
舉報
0/150
提交
取消