Java 断路器不能在回路外侧使用

Java 断路器不能在回路外侧使用,java,break,Java,Break,但我使用了这个计时器内部的中断,其中计时器位于另一个for循环的内部 那么我为什么会出错呢?您可以从函数中访问最后一个布尔变量,并在应该中断时将其值设置为true。然后,在for循环中,只需检查变量是否为true和break 您的代码不起作用,因为中断实际上不在for循环内,而是在另一个作用域中的匿名函数内。您可以从函数中访问最终的布尔变量,并在应该中断时将其值设置为true。然后,在for循环中,只需检查变量是否为true和break 您的代码不起作用,因为中断实际上不在for循环内,而是在另

但我使用了这个计时器内部的中断,其中计时器位于另一个for循环的内部

那么我为什么会出错呢?

您可以从函数中访问最后一个布尔变量,并在应该中断时将其值设置为true。然后,在for循环中,只需检查变量是否为true和break

您的代码不起作用,因为中断实际上不在for循环内,而是在另一个作用域中的匿名函数内。

您可以从函数中访问最终的布尔变量,并在应该中断时将其值设置为true。然后,在for循环中,只需检查变量是否为true和break


您的代码不起作用,因为中断实际上不在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();
  }         
}