gpt4 book ai didi

java - 生成Java源代码和跳转

转载 作者:行者123 更新时间:2023-12-02 08:25:21 25 4
gpt4 key购买 nike

我正在动态生成Java代码,然后将其编译并加载回。我的问题是我本质上需要跳转,因为当我从函数返回时,我希望从循环中我所在的点继续执行已退出。希望这里的代码能够说明我的愿望。尽管实际的代码也会有一些 if,而且会更深入。

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 应用程序交互。

到目前为止我最好的猜测是:

  • 翻转循环的嵌套和逻辑。这变得太麻烦而且有问题。
  • 添加逻辑以允许流程返回到原来的位置,但这可能会很困惑。
  • 我假设字节码可以跳转,这样我就可以自己生成字节码,但这似乎并不理想(有什么好的库吗?)
  • 继续采用传球风格以避免回归,但这将涉及重大重组,尽管目前这是可能的方法。

我想知道是否有人有什么想法?

最佳答案

最简单的选择是使用 switch block (或者如果必须的话,使用嵌套 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;
}
}
}

关于java - 生成Java源代码和跳转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4635965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com