Java 断路器不能在回路外侧使用
但我使用了这个计时器内部的中断,其中计时器位于另一个for循环的内部 那么我为什么会出错呢?您可以从函数中访问最后一个布尔变量,并在应该中断时将其值设置为true。然后,在for循环中,只需检查变量是否为true和break 您的代码不起作用,因为中断实际上不在for循环内,而是在另一个作用域中的匿名函数内。您可以从函数中访问最终的布尔变量,并在应该中断时将其值设置为true。然后,在for循环中,只需检查变量是否为true和breakJava 断路器不能在回路外侧使用,java,break,Java,Break,但我使用了这个计时器内部的中断,其中计时器位于另一个for循环的内部 那么我为什么会出错呢?您可以从函数中访问最后一个布尔变量,并在应该中断时将其值设置为true。然后,在for循环中,只需检查变量是否为true和break 您的代码不起作用,因为中断实际上不在for循环内,而是在另一个作用域中的匿名函数内。您可以从函数中访问最终的布尔变量,并在应该中断时将其值设置为true。然后,在for循环中,只需检查变量是否为true和break 您的代码不起作用,因为中断实际上不在for循环内,而是在另
您的代码不起作用,因为中断实际上不在for循环内,而是在另一个作用域中的匿名函数内。匿名类在编译时成为单独的类。以下代码大致相当:
break cannot be used outside of a loop or a switch
名称MyAnonymousTimer不是类的实际名称;它更像是包含class$1
因此,中断实际上并不在循环中;您可以在循环中内联声明它,这仅仅是语法上的方便
您需要使用return,就像停止执行任何其他void方法一样。匿名类在编译时成为单独的类。以下代码大致相当:
break cannot be used outside of a loop or a switch
名称MyAnonymousTimer不是类的实际名称;它更像是包含class$1
因此,中断实际上并不在循环中;您可以在循环中内联声明它,这仅仅是语法上的方便
您需要使用return,就像停止执行任何其他void方法一样。您可以从图形上看到断点在循环中,但实际上断点在不同的范围内。 这样,break指令在内部作用域内执行,注意每次迭代都有一条新的指令
重复循环做什么?因为我在考虑一个不同的解决方案,但我必须知道它的行为。从图形上看,断点在循环中,但实际上断点在不同的范围内。 这样,break指令在内部作用域内执行,注意每次迭代都有一条新的指令
重复循环做什么?因为我考虑了一个不同的解决方案,但我必须知道它的行为。中断实际上不在循环内,而是在一个与周围范围无关的完全独立的函数中。运行中的代码不在循环内。它是计时器启动时运行的代码。它只在循环中设置。您需要使用return.com,因为您在循环中。你不再在循环的范围内,因此你不能使用break;我认为这个问题不应该被否决。它非常清楚并且写得很好。中断实际上不在循环中,它在一个与周围范围无关的完全独立的函数中。运行中的代码不在循环中。它是计时器启动时运行的代码。它只在循环中设置。您需要使用return.com,因为您在循环中。你不再在循环的范围内,因此你不能使用break;我认为这个问题不应该被否决。它非常清楚,写得也很好。我认为在这种情况下,return相当于continue,它不会破坏循环。@Marounnaroun,不。但是如果在循环完成后将stopTimer设置为true,它无论如何也不会破坏循环。现在我实际上不确定,将检查:我认为在这种情况下,return相当于continue,它不会中断循环。@marounnaroun好吧,不会。但如果在循环完成后将stopTimer设置为true,它无论如何也不会中断循环。现在我实际上不确定,将检查:
class ContainingClass {
void myMethod() {
for(int i = 0; i < 10; ++i) {
outerTimer = new MyAnonymousTimer();
outerTimer.run();
outerTimer.scheduleRepeating(tmptimerDuration);
}
}
}
class MyAnonymousTimer extends Timer {
@Override
public void run() {
if(stopTimer) {
cancel();
break; // break cannot be used outside of a loop or a switch
}
repeatLoop();
}
}