有没有一种方法,以机械翻译goto语句if,switch,while,break,和continue报表等,或函数调用,对象,什么?
虽然这不是一个好主意,但可以使用循环和swith-case.在下面的示例中,当您进入continue时,goto变量决定要转到的标签(0,1,2或默认值).
int goTo=0;
while(true){
switch(goTo){
case 0:
doSomething();
goTo = 1;
continue;
case 1:
doSomethingElse();
goTo = 2;
continue;
case 2:
doSOmethingDifferent();
goTo = 0;
continue;
default:
return;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这值得分享.我有一天在Reddit上看到了这个,它是通过自定义类加载器转到任意行号(在同一个.java文件中)的实现.这是一段有趣的代码.http://steike.com/tmp/goto.zip.我不相信它.
编辑:对于那些好奇但不想下载zip并运行它的人,对于以下文件:
public class GotoDemo {
public static void main(String[] args) {
int i = 5;
System.out.println(i);
i = i - 1;
if (i >= 0) {
GotoFactory.getSharedInstance().getGoto().go(4);
}
try {
System.out.print("Hell");
if (Math.random() < 2) throw new Exception();
System.out.println("World!");
} catch (Exception e) {
System.out.print("o ");
GotoFactory.getSharedInstance().getGoto().go(13);
}
}
}
Run Code Online (Sandbox Code Playgroud)
它将打印:
Run Code Online (Sandbox Code Playgroud)3 2 1 0 Hello World!