【发布时间】:2011-06-05 21:03:49
【问题描述】:
我正在动态生成 Java 代码,然后将其编译并重新加载。我的问题是我本质上需要跳转,因为当我从函数返回时,我希望从循环中的点继续执行已经退出。希望这里的代码能说明我的愿望。虽然实际的代码也会有一些 ifs 并且更深。
MyIter a,b,c;
boolean func() {
jump to correct state here
state0:
a = ...;
while (a.next()) {
state1: while (b.next()) {
return true; // start again at state1
}
b = ...;
}
c = ...;
state2:
while (c.next()) {
return true; // start again at state2
}
return false;
}
在 C 语言中,我可能会使用跳转表和状态变量。性能是这里的关键,代码与 Java 应用程序交互。
到目前为止,我最好的猜测是:
- 翻转循环嵌套和逻辑。这变得太麻烦和有问题了。
- 添加逻辑以允许流程返回到原来的位置,但这可能会很混乱。
- 我假设字节码可以跳转,所以我可以自己生成字节码,但这似乎并不理想(有什么好的库吗?)
- 继续传递风格以避免回归,但这将涉及重大重组,尽管目前可能是这样。
我想知道是否有人有任何想法?
【问题讨论】:
-
我认为即使在字节码中你也很难进行跳转 - 验证器有各种各样的规则,使字节码的灵活性比你想象的要低得多。
标签: java