我写了一个 Java 程序,然后编译它,然后反编译它并得到一个 Java 文件。反编译器将精确缩进的精确 Java 文件返回给我的原始 Java 文件,但这就是反编译器所做的,这不是问题,在我脑海中燃烧的问题是缩进。
由于反编译的 Java 文件与原始文件具有完全相同的缩进,因此我得出结论,类文件也存储了缩进数据。
现在的问题如下:
如果是:
为什么类文件需要知道缩进?
缩进是为了可读性,没有人读取类文件,那么为什么类文件不能存储它并节省一些空间呢?
类文件只是一个加密的 Java 源文件,反编译器可以在其中解密以返回原始文件吗?
编译后的类文件不包含源文件的确切空白信息。
我认为您的反编译类文件与您的输入完全一样,有两个可能的原因:
它们确实包含与为帮助调试而执行的代码相关联的行号。
但是尝试在您的某些表达式中添加一些随机空格,您会发现反编译器无法重建它们。
不,类文件不是源文件的简单“加密”,编译时会丢失大量信息(实际上可能会添加一些从引用类中获取的信息,例如被调用方法的特定签名)。
您甚至可以在编译期间关闭调试信息以去除更多信息(例如局部变量名称)。
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |