我正在生成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应用程序交互。
到目前为止,我最好的猜测是:
我想知道是否有人有任何想法?
答案 0 :(得分:2)
最简单的选择是使用开关块(或者如果必须,使用嵌套的switch语句)
enum State {
state1, state2, state3;
}
State state = State.state1;
public boolean func() {
while(true) {
switch(state) {
case state1:
if(test()) return true;
state = state2;
break;
case state2:
if(test2()) return false;
state = state3;
break;
case state3:
if(test3()) return true;
state = state1;
break;
}
}
}
答案 1 :(得分:0)
Java协程库可能适合您的目的。有关指示,请参阅this related StackOverflow question。