为什么 Java 反编译器生成带有 goto 的代码?
Why do Java decompilers generate code with gotos?
反编译 .jar 文件后,我在生成的 Java 代码中看到了这一行:
for (Iterator i = val.getparts(); i.hasNext(); goto 135)
这是什么意思?如果 goto
不编译,为什么反编译的 Java 代码包含 goto
语句?
大多数反编译器不考虑 goto
在 Java 源文件中无效的事实。它出现在 jars 和类文件中,因为编译器使用它在 bytecode 级别实现以下内容:
if-else
语句
- 循环
- 开关
try-catch-finally
块
反编译 .jar 文件后,我在生成的 Java 代码中看到了这一行:
for (Iterator i = val.getparts(); i.hasNext(); goto 135)
这是什么意思?如果 goto
不编译,为什么反编译的 Java 代码包含 goto
语句?
大多数反编译器不考虑 goto
在 Java 源文件中无效的事实。它出现在 jars 和类文件中,因为编译器使用它在 bytecode 级别实现以下内容:
if-else
语句- 循环
- 开关
try-catch-finally
块